Ungültige Anweisungen mit entsprechender Fehlermeldung (Beispiele).

Ungültige Anweisungen mit entsprechender Fehlermeldung (Beispiele).

Ich muss benutzenbcpBefehlszeilentool zum Exportieren von Daten aus einemSQL ServerDatenbank in eine Datei auf einem Red Hat-Server. Ich verwende (anscheinend) gültige Anweisungen, aberbcperzeugt keinerlei Ausgabe/Ergebnisse. Wenn ich jedoch Anweisungen mit fehlenden oder ungültigen Parametern ausführe, wird der entsprechende Fehler angezeigt. Ich suche nach dem Grund für dieses Problem (z. B. fehlerhafte Installation, falsche Verwendung vonbcp, fehlende Berechtigungen oder andere bekannte Konflikte) und wie man sie behebt.


bcp-Anweisung:

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

bcp-Verwendung:

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-Version:

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

SQL Server-Version ( 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)

Verteilung:

Red Hat Enterprise Linux 6.7 (KornShell).

Ungültige Anweisungen mit entsprechender Fehlermeldung (Beispiele).

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'.

ZUSAMMENFASSUNG.

Das Ziel besteht darin, eine Datendatei mit der folgenden (oder einer ähnlichen) Syntax zu generieren:

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

Die Fakten sind:

  • Beim Ausführen einer gültigenbcpAnweisung wird im Fenster überhaupt nichts angezeigt (keine Ausgabe) und es wird keine Datendatei erstellt.
  • -TIch kann die Option (vertrauenswürdige Verbindung mit integrierter Sicherheit) nicht verwenden fürbcpalso muss ich angeben,Server, Benutzer und Passwort.
  • Habe die Option bereits an einem sehr einfachen kleinen Tisch ausprobiert queryout, aber immer noch ohne Erfolg.
  • Die Anmeldeinformationen sind gültig, ich habe sie erfolgreich sqlcmdwie folgt getestet: sqlcmd -S server -U user -P password -Q 'SELECT * FROM really_small_table'.
  • DerbcpAussagen unter„Ungültige Anweisungen mit entsprechender Fehlermeldung (Beispiele)“Abschnitt dieser Frage sind nur Beispiele für ungültige Aussagen, um zu zeigen, dassbcptut tatsächlich etwas, liefert aber die erwarteten Ergebnisse.

Antwort1

Was ich auf meiner Debian-Plattform festgestellt habe, ist, dass der Microsoft ODBC-Installationsprozess libodbc.soin … eingefügt wurde /usr/lib64. Dies ist kein erwarteter Speicherort für Bibliotheken und bcpkann ihn nicht finden. Aber anstatt Ihnen mitzuteilen, dass eine erforderliche Bibliothek nicht gefunden werden kann, wird es einfach beendet.

Lösung für Debian. Ihre Situation sollte ähnlich sein.

  1. Suchen Sie, wo das Installationsverfahren Folgendes abgelegt hat libodbc.so:

    find / -type f -name libodbc.so
    
  2. Füge sein Verzeichnis zu einer neuen Datei hinzu /etc/ld.so.conf.d/odbc.conf. Ich habe mir den Namen ausgedacht und auf meinem System /etc/ld.so.conf.dist er enthalten von /etc/ld.so.conf:

    # Required but not documented by MS ODBC installation for SQL Server
    /usr/lib64
    
  3. Ausführen ldconfig, um die Liste der Bibliotheksstandorte zu aktualisieren

  4. Wiederholen Sie den bcpBefehl

Sie müssen Root sein, um die Schritte 2 und 3 auszuführen. Ich gehe davon aus, dass das kein großes Problem ist, da Sie es geschafft haben, die SQL Server-Bibliotheken zu installieren.

verwandte Informationen