Недопустимые утверждения с соответствующим сообщением об ошибке (примеры).

Недопустимые утверждения с соответствующим сообщением об ошибке (примеры).

Я должен использоватьбцпинструмент командной строки для экспорта данных изSQL-сервербазу данных в файл на сервере Red Hat. Я (видимо) использую допустимые операторы, нобцпне производит никаких выходных данных/результатов. Однако, когда я выполняю операторы с отсутствующими или недопустимыми параметрами, он выводит соответствующую ошибку. Я ищу причину этой проблемы (например, неисправная установка, неправильное использованиебцп, отсутствие разрешений или любой другой известный конфликт) и как это исправить.


заявление bcp:

bcp fully_qualified_table_name out ./data.txt -c -S server -U user -P password

использование bcp:

usage: /opt/microsoft/bin/bcp {dbtable | query} {in | out | queryout | format} datafile
  [-m maxerrors]            [-f formatfile]          [-e errfile]
  [-F firstrow]             [-L lastrow]             [-b batchsize]
  [-n native type]          [-c character type]      [-w wide character type]
  [-N keep non-text native] [-q quoted identifier]
  [-t field terminator]     [-r row terminator]
  [-a packetsize]           [-K application intent]
  [-S server name or DSN if -D provided]             [-D treat -S as DSN]
  [-U username]             [-P password]
  [-T trusted connection]   [-v version]             [-R regional enable]
  [-k keep null values]     [-E keep identity values]
  [-h "load hints"]         [-d database name]

версия bcp:

BCP - Bulk Copy Program for Microsoft SQL Server.
Copyright (C) Microsoft Corporation. All Rights Reserved.
Version: 11.0.2270.0

Версия SQL Server ( SELECT @@VERSION):

Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
   May 14 2014 18:34:29
   Copyright (c) Microsoft Corporation
   Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

Распределение:

Red Hat Enterprise Linux 6.7 (KornShell).

Недопустимые утверждения с соответствующим сообщением об ошибке (примеры).

bcp THAT_TUB_ACE.oh_nerd.table_name out ./data.txt -c -S sr._bear -U you_sr. -P pass_sword

    SQLState = S1T00, NativeError = 0
    Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]Login timeout expired
    SQLState = 08001, NativeError = 11001
    Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.
    SQLState = 08001, NativeError = 11001
    Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server]TCP Provider: Error code 0x2AF9

...

bcp fully_qualified_table_name ./data.txt -c -S valid_server -U valid_user -P bad_word

    bcp fully_qualified_table_name out ./data.txt -c -S valid_server -U valid_user -P bad_word
    SQLState = 28000, NativeError = 18456
    Error = [unixODBC][Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user 'valid_user'.

КРАТКОЕ СОДЕРЖАНИЕ.

Цель состоит в том, чтобы создать файл данных, используя следующий синтаксис (или аналогичный):

bcp fully_qualified_table_name out ./data.txt -c -S server -U user -P password

Факты таковы:

  • При запуске действительногобцпв окне вообще ничего нет (нет вывода) и файл данных не создается.
  • Я не могу использовать опцию -T(доверенное соединение с использованием встроенной безопасности) длябцппоэтому я должен указатьсервер, пользователь и пароль.
  • Я уже пробовал queryoutэтот вариант на очень простом маленьком столе, но все равно безуспешно.
  • Учетные данные действительны, я успешно проверил их, используя sqlcmdследующее: sqlcmd -S server -U user -P password -Q 'SELECT * FROM really_small_table'.
  • Theбцпзаявления в соответствии с«Недопустимые утверждения с соответствующим сообщением об ошибке (примеры)»раздел этого вопроса - это всего лишь примеры недействительных утверждений, показывающие, чтобцпна самом деле что-то делает, но не даёт ожидаемых результатов.

решение1

Я обнаружил на своей платформе Debian, что процесс установки Microsoft ODBC помещен libodbc.soв /usr/lib64. Это не ожидаемое расположение для библиотек и bcpне может его найти. Но вместо того, чтобы сообщить вам, что он не может найти необходимую библиотеку, он просто завершает работу.

Решение для Debian. Ваша ситуация должна быть похожей.

  1. Найдите, куда поместилась процедура установки libodbc.so:

    find / -type f -name libodbc.so
    
  2. Добавьте его каталог в новый файл /etc/ld.so.conf.d/odbc.conf. Я придумал имя, и в моей системе /etc/ld.so.conf.dон включен из /etc/ld.so.conf:

    # Required but not documented by MS ODBC installation for SQL Server
    /usr/lib64
    
  3. Запустите ldconfig, чтобы обновить список местоположений библиотек

  4. Повторите bcpкоманду.

Для выполнения шагов 2 и 3 вам понадобятся права root. Полагаю, это не составит большого труда, учитывая, что вам удалось установить библиотеки SQL Server.

Связанный контент