bcpコマンドラインツールを使用して、SQL ServerデータベースからRedHatサーバー内のファイルにデータをエクスポートする必要があります。私は(明らかに)有効なステートメントを使用していますが、bcpはいかなる種類の出力/結果も生成していません。ただし、パラメーターが欠落しているか無効なステートメントを実行すると、それぞれのエラーが表示されます。この問題の理由(インストールの欠陥、bcpの不適切な使用、権限の欠如、その他の既知の競合など)とその修正方法を探しています。
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'
。私がDebianプラットフォームで見つけたのは、Microsoft ODBCインストールプロセスがlibodbc.so
を/usr/lib64
に入れたことです。これはライブラリとbcp
はそれを見つけることができません。しかし、必要なライブラリが見つからないと言う代わりに、単に終了します。
Debianのソリューション。あなたの状況は似ているはずです。
インストール手順でlibodbc.so
が配置されている場所を見つけます。
find / -type f -name libodbc.so
そのディレクトリを新しいファイル/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
ldconfig
を実行して、ライブラリの場所のリストを更新します
bcp
コマンドを再試行してください
手順2と3を実行するには、rootである必要があります。SQLServerライブラリをインストールできたことを考えると、これは大したことではないと思います。