%E3%80%82.png)
使わなければならないbpcデータをエクスポートするためのコマンドラインツールSQLサーバーデータベースをRed Hatサーバーのファイルにコピーします。私は(どうやら)有効なステートメントを使用していますが、bpc出力/結果がまったく生成されません。ただし、不足しているパラメータや無効なパラメータを含むステートメントを実行すると、それぞれのエラーが表示されます。この問題の原因を探しています(例:インストールの不備、不適切な使用など)。bpc、権限不足、またはその他の既知の競合など) とその修正方法を説明します。
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
事実は次のとおりです。
- 有効なbpcステートメントでは、ウィンドウには何も表示されず (出力なし)、データファイルも作成されません。
- オプション
-T
(統合セキュリティを使用した信頼された接続)を使用できませんbpcだから私はサーバー、ユーザー、パスワード。 queryout
非常にシンプルな小さなテーブルでオプションを試しましたが、まだうまくいきません。- 資格情報は有効です。
sqlcmd
次のようにしてテストしたところ、正常に完了しましたsqlcmd -S server -U user -P password -Q 'SELECT * FROM really_small_table'
。 - のbpc以下の声明「無効なステートメントとそれぞれのエラー メッセージ (例)」この質問のセクションは、bpc実際に何かを実行しますが、期待される結果は得られません。
答え1
私の 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 である必要があります。SQL Server ライブラリをインストールできたので、これは大した問題ではないと思います。