帶有對應錯誤訊息的無效語句(範例)。

帶有對應錯誤訊息的無效語句(範例)。

我必須使用巴克普用於從命令列匯出資料的工具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'
  • 巴克普下的陳述“帶有對應錯誤訊息的無效語句(範例)”這個問題的部分只是無效陳述的例子,以表明巴克普實際上做了一些事情,但給出了預期的結果。

答案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命令

您需要成為 root 才能執行步驟 2 和 3。

相關內容