無効なステートメントとそれぞれのエラー メッセージ (例)。

無効なステートメントとそれぞれのエラー メッセージ (例)。

使わなければならない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 の解決策。あなたの状況も同様であるはずです。

  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 ライブラリをインストールできたので、これは大した問題ではないと思います。

関連情報