Herstellen einer Verbindung mit sqlcmd

ODBC-Treiber herunterladen

Das sqlcmd-Hilfsprogramm ist mit Microsoft ODBC Driver for SQL Server unter Linux und macOS verfügbar.

Die folgenden Befehle zeigen die Verwendung der Windows-Authentifizierung (Kerberos) bzw. der SQL Server-Authentifizierung:

sqlcmd -E -Sxxx.xxx.xxx.xxx
sqlcmd -Sxxx.xxx.xxx.xxx -Uxxx -Pxxx

Verfügbare Optionen

Die folgenden Optionen sind in sqlcmd unter Linux und macOS verfügbar:

-?
Zeigt die Verwendung von sqlcmd an.

-a
Fordern Sie eine Paketgröße an.

-b
Beendet den Batchauftrag, wenn ein Fehler auftritt.

-cBatchterminator
Geben Sie das Batchabschlusszeichen an.

-C
Vertrauen Sie dem Server-Zertifikat

-dDatenbankname
Gibt eine USEdatabase_name-Anweisung aus, wenn Sie sqlcmd starten.

-D
Bewirkt, dass der Wert, der an die Option -S von sqlcmd übergeben wird, als Datenquellenname (Data Source Name, DSN) interpretiert wird. Weitere Informationen finden Sie unter „DSN-Unterstützung in sqlcmd und bcp“ am Ende dieses Artikels.

-e
Schreiben Sie Eingabeskripts in das Standardausgabegerät (stdout).

-E
Verwendet eine vertrauenswürdige Verbindung (integrierte Authentifizierung). Weitere Informationen zum Herstellen von vertrauenswürdigen Verbindungen, die die integrierte Authentifizierung von einem Linux- oder macOS-Client verwenden, finden Sie unter Nutzung der Integrierten Authentifizierung.

-fcodepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
Gibt die Eingabe- und Ausgabecodepages an. Die Codepagenummer ist ein numerischer Wert, der eine installierte Linux-Codepage angibt. (verfügbar seit Version 17.5.1.1)

-G
Diese Option wird vom Client beim Herstellen einer Verbindung mit Azure SQL-Datenbank, Azure SQL Managed Instance oder Azure Synapse Analytics verwendet, um anzugeben, dass der Benutzer mithilfe der Authentifizierung mit Microsoft Entra ID (ehemals Azure Active Directory) authentifiziert werden soll. Diese Option kann nur mit -P kombiniert werden, um die Authentifizierung mit Zugriffstoken zu verwenden (Version 17.8 und höher). Durch diese Option wird die sqlcmd -Skriptvariable „SQLCMDUSEAAD = true“ festgelegt. Für die Option -G ist mindestens die sqlcmd-Version 17.6 erforderlich. Um die Version zu bestimmen, führen Sie sqlcmd -?aus.

Wichtig

Die Option -G gilt nur für Azure SQL-Datenbank, Azure SQL Managed Instance und Azure Synapse Analytics.

Die interaktive Microsoft Entra-Authentifizierung wird unter Linux und macOS derzeit nicht unterstützt. Die integrierte Microsoft Entra-Authentifizierung erfordert Microsoft ODBC-Treiber 17 für SQL Server ab Version 17.6.1 und eine ordnungsgemäß konfigurierte Kerberos-Umgebung.

-hnumber_of_rows
Geben Sie die Anzahl der Zeilen an, die zwischen den Spaltenüberschriften geschrieben werden sollen.

-H
Geben Sie den Namen einer Arbeitsstation an.

-iinput_file[,input_file[,...]]
Identifizieren Sie die Datei, die einen Batch mit SQL-Anweisungen oder gespeicherten Prozeduren enthält.

-I
Legen Sie für die SET QUOTED_IDENTIFIER-Verbindungsoption ON fest.

-k
Entfernen oder Ersetzen von Zeichen.

-KAnwendungszweck
Deklariert den Arbeitsauslastungstyp der Anwendung beim Herstellen einer Verbindung mit einem Server. Der einzige derzeit unterstützte Wert ist ReadOnly. Wenn -K nicht angegeben wird, unterstützt sqlcmd keine Konnektivität mit einem sekundären Replikat in einer Always-On-Verfügbarkeitsgruppe. Weitere Informationen finden Sie unter Der ODBC-Treiber unter Linux und macOS für Hochverfügbarkeit und Notfallwiederherstellung.

Hinweis

-K wird in der CTP-Version für SUSE Linux nicht unterstützt. Sie können jedoch das Schlüsselwort ApplicationIntent=ReadOnly in einer DSN-Datei angeben, die an sqlcmd übergeben wird. Weitere Informationen finden Sie unter „DSN-Unterstützung in sqlcmd und bcp“ am Ende dieses Artikels.

-ltimeout
Gibt an, wie viele Sekunden beim Herstellen einer Verbindung mit einem Server verstreichen dürfen, bevor ein Timeout für eine sqlcmd-Anmeldung eintritt.

-merror_level
Steuern Sie, welche Fehlermeldungen an stdout gesendet werden.

-MMultisubnetz-Failover
Geben Sie immer -M an, wenn Sie eine Verbindung mit dem Verfügbarkeitsgruppenlistener einer SQL Server 2012 (11.x)-Verfügbarkeitsgruppe oder einer SQL Server 2012 (11.x)-Failoverclusterinstanz herstellen. -M gewährleistet eine schnellere Erkennung von Failovers und Verbindung mit dem (gerade) aktiven Server. Wenn -M nicht angegeben ist, ist -M deaktiviert. Weitere Informationen zu Always On-Verfügbarkeitsgruppen finden Sie unter ODBC-Treiber unter Linux und macOS – Hochverfügbarkeit und Notfallwiederherstellung.

Hinweis

-M wird in der CTP-Version für SUSE Linux nicht unterstützt. Sie können jedoch das Schlüsselwort MultiSubnetFailover=Yes in einer DSN-Datei angeben, die an sqlcmd übergeben wird. Weitere Informationen finden Sie unter „DSN-Unterstützung in sqlcmd und bcp“ am Ende dieses Artikels.

-N[s|m|o]
Legen Sie den Verbindungsverschlüsselungsmodus auf „Strict“, „Mandatory“ bzw. „Optional“ fest. Der Standardwert ist „Mandatory“, wenn nicht angegeben. ([s|m|o] in sqlcmd 18.0 hinzugefügt)

-ooutput_file
Gibt die Datei an, in welche die Ausgabe von sqlcmd geschrieben wird.

-p
Gibt Leistungsstatistiken für jedes Resultset aus.

-P
Geben Sie ein Benutzerkennwort an. Wenn die Option mit -G und ohne -U verwendet wird, wird eine Datei angegeben, die ein Zugriffstoken enthält (Version 17.8 und höher). Die Tokendatei sollte im UTF-16LE-Format (ohne BOM) vorliegen.

Zugriffstoken können über verschiedene Methoden abgerufen werden. Da das Zugriffstoken unverändert gesendet wird, muss sichergestellt werden, dass die einzelnen Bytes korrekt sind. Im Folgenden finden Sie einen Beispielbefehl, mit dem ein Zugriffstoken abgerufen wird. Der Befehl verwendet die Azure CLI- und Linux-Befehle und speichert das Token im richtigen Format in einer Datei. Wenn die Standardcodierung Ihres Systems oder Terminals nicht ASCII oder UTF-8 ist, müssen Sie die iconv-Optionen möglicherweise anpassen. Die resultierende Datei muss zuverlässig geschützt und gelöscht werden, sobald sie nicht mehr benötigt wird.

az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile

-qcommandline_query
Führt eine Abfrage aus, wenn sqlcmd gestartet wird, beendet den Vorgang jedoch nicht, wenn die Ausführung der Abfrage abgeschlossen ist.

-Qcommandline_query
Führt eine Abfrage aus, wenn sqlcmd gestartet wird. sqlcmd wird beendet, wenn die Abfrage abgeschlossen ist.

-r
Leitet die Fehlermeldungen an stderr.

-R
Bewirkt, dass der Treiber die regionalen Einstellungen des Clients verwendet, um Währungs-, Datums- und Uhrzeitdaten in Zeichendaten zu konvertieren. Derzeit werden nur en_US-Formatierungen (US-Englisch) verwendet.

-scolumn_separator_char
Geben Sie das Spaltentrennzeichen an.

-S [protocol:] server[,port]
Gibt die Instanz von SQL Server an, mit der eine Verbindung hergestellt werden soll, bzw. bei Verwendung von „-D“ ein DSN. Der ODBC-Treiber unter Linux und macOS erfordert -S. Der einzige gültige Protokollwert ist tcp.

-tAbfragetimeout
Gibt an, wie viele Sekunden verstreichen, bevor für einen Befehl (oder eine SQL-Anweisung) ein Timeout eintritt.

-u
Gibt an, dass die Ausgabedatei unabhängig vom Format der Eingabedatei im Unicode-Format gespeichert wird.

-U
login_id Gibt eine Benutzeranmelde-ID an.

-VFehlerschweregrad
Steuern Sie den Schweregrad, der zur Festlegung der ERRORLEVEL-Variable verwendet wird.

-wcolumn_width
Geben Sie die Bildschirmbreite für die Ausgabe an.

-W
Entfernen Sie nachfolgende Leerzeichen aus einer Spalte.

-x
Variablenersetzung deaktivieren.

-X
Befehle, Startskripts und Umgebungsvariablen deaktivieren.

-yAnzeigebreite_bei_Typen_mit_variabler_Länge
Legt die sqlcmd-Skriptvariable SQLCMDMAXFIXEDTYPEWIDTH fest.

-YAnzeigebreite_bei_Typen_mit_fester_Länge
Legt die sqlcmd-Skriptvariable SQLCMDMAXVARTYPEWIDTH fest.

-zpassword
Kennwort ändern.

-Zpassword
Kennwort ändern und beenden.

Verfügbare Befehle

Im aktuellen Release sind die folgenden Befehle verfügbar:

  • [:]!!

  • :Connect

  • :Error

  • [:]EXIT

  • GO [count]

  • :Help

  • :List

  • :Listvar

  • :On Error

  • :Out

  • :Perftrace

  • [:]QUIT

  • :r

  • :RESET

  • :setvar

Nicht verfügbare Optionen

Im aktuellen Release sind die folgenden Optionen nicht verfügbar:

-A
Melden Sie sich über eine dedizierte Administratorverbindung (Dedicated Administrator Connection, DAC) in SQL Server an. Weitere Informationen zur Herstellung einer dedizierten Administratorverbindung (DAC) finden Sie unter Programmierrichtlinien.

-L
Listen Sie die lokal konfigurierten Servercomputer sowie die Namen der Servercomputer auf, die Broadcastnachrichten über das Netzwerk senden.

-v
Erstellt eine sqlcmd-Skriptvariable, die in einem sqlcmd-Skript verwendet werden kann.

Sie können die folgende alternative Methode verwenden: Fügen Sie die Parameter in eine einzige Datei ein, die Sie dann an eine andere Daten anhängen können. Mit dieser Methode können Sie eine Parameterdatei verwenden, um die Werte zu ersetzen. Erstellen Sie beispielsweise eine Datei namens a.sql (die Parameterdatei) mit dem folgenden Inhalt:

:setvar ColumnName object_id
:setvar TableName sys.objects

Erstellen Sie anschließend eine Datei namens b.sql mit den Parametern für den Ersatz:

SELECT $(ColumnName) FROM $(TableName)

Kombinieren Sie in der Befehlszeile a.sql und b.sql mithilfe der folgenden Befehle zu c.sql:

cat a.sql > c.sql

cat b.sql >> c.sql

Führen Sie sqlcmd aus, und verwenden Sie c.sql als Eingabedatei:

sqlcmd -S<...> -P<..> -U<..> -I c.sql

Nicht verfügbare Befehle

Im aktuellen Release sind die folgenden Befehle nicht verfügbar:

  • :ED

  • :ServerList

  • :XML

DSN-Unterstützung in sqlcmd und bcp

Sie können in der Option sqlcmd oder bcp-S (oder im sqlcmd :Connect-Befehl) statt eines Servernamens einen Datenquellennamen (Data Source Name, DSN) angeben, wenn Sie -D angeben. -D sorgt dafür, dass sqlcmd oder bcp eine Verbindung mit dem Server herstellen kann, der in DSN durch die Option -S angegeben ist.

System-DSNs werden in der Datei odbc.ini im ODBC-SysConfigDir-Verzeichnis (/etc/odbc.ini in Standardinstallationen) gespeichert. Benutzer-DSNs werden in .odbc.ini im Basisverzeichnis eines Benutzers (~/.odbc.ini) gespeichert.

Auf Windows-Systemen sind System- und Benutzer-DSNs in der Registrierung gespeichert und werden mithilfe von odbcad32 verwaltet. Datei-DSNs werden von bcp und sqlcmd nicht unterstützt.

Eine Liste der Einträge, die vom Treiber unterstützt werden, finden Sie unter Schlüsselwörter und Attribute von DSN- und Verbindungszeichenfolgen.

In einem DSN ist nur der Eintrag DRIVER erforderlich. Für die Verbindung mit einem Remoteserver benötigt sqlcmd oder bcp allerdings einen Wert im SERVER-Element. Wenn das SERVER-Element leer oder nicht im DSN vorhanden ist, versuchen sqlcmd und bcp, eine Verbindung mit der Standardinstanz auf dem lokalen System herzustellen.

Wenn bcp auf Windows-Systemen verwendet wird, benötigen SQL Server 2017 (14.x) und frühere Versionen den SQL Native Client 11-Treiber (sqlncli11.dll), während für SQL Server 2019 (15.x) und höher der Microsoft ODBC Driver 17 für SQL Server-Treiber (msodbcsql17.dll) erforderlich ist.

Wenn diese Option sowohl im DSN als auch in der sqlcmd- oder bcp-Befehlszeile angegeben ist, überschreibt die Befehlszeilenoption den im DSN verwendeten Wert. Wenn der DSN z.B. einen DATABASE-Eintrag enthält und sqlcmd-Befehlszeile -d enthält, wird der an -d übergebene Wert verwendet. Wenn Trusted_Connection=yes im DSN angegeben ist, werden die Kerberos-Authentifizierung sowie der Benutzername ( –U) verwendet und das Kennwort ( –P), falls vorhanden, ignoriert.

Vorhandene Skripts, die isql aufrufen, können geändert werden, um sqlcmd zu verwenden, indem der folgende Alias definiert wird: alias isql="sqlcmd -D".

Siehe auch

Herstellen einer Verbindung mit bcp
Anmerkungen zu dieser Version