sqlcmd Utilitysqlcmd Utility

Gilt für: JaSQL Server JaAzure SQL-Datenbank JaAzure Synapse Analytics (SQL DW) JaParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Informationen zu SQL Server 2014 und niedriger finden Sie unter sqlcmd Utility.For SQL Server 2014 and lower, see sqlcmd Utility.

Informationen zur Verwendung von sqlcmd unter Linux finden Sie unter Installieren von sqlcmd und bcp unter Linux.For using sqlcmd on Linux, see Install sqlcmd and bcp on Linux.

Mit dem Hilfsprogramm sqlcmd können Sie Transact-SQL-Anweisungen, System Prozeduren und Skriptdateien über eine Vielzahl von verfügbaren Modi eingeben:The sqlcmd utility lets you enter Transact-SQL statements, system procedures, and script files through a variety of available modes:

  • An einer Eingabeaufforderung.At the command prompt.
  • Im Abfrage-Editor im SQLCMD-Modus.In Query Editor in SQLCMD mode.
  • In einer Windows-Skriptdatei.In a Windows script file.
  • In einem Auftrags Schritt des Betriebssystems (cmd. exe) eines SQL Server-Agent Auftrags.In an operating system (Cmd.exe) job step of a SQL Server Agent job.

Das Hilfsprogramm verwendet zum Ausführen von Transact-SQL-Batches ODBC.The utility uses ODBC to execute Transact-SQL batches.

Herunterladen der aktuellen Version des sqlcmd-HilfsprogrammsDownload the latest version of sqlcmd Utility

Download Microsoft-Befehlszeilen-Hilfsprogramme 15.0.x für SQL Server (x64) herunterladen (2,6 MB)download Download Microsoft Command Line Utilities 15.0.x for SQL Server (x64) (2.6 MB)
Download Microsoft-Befehlszeilen-Hilfsprogramme 15.0.x für SQL Server (x86) herunterladen (2,3 MB)download Download Microsoft Command Line Utilities 15.0.x for SQL Server (x86) (2.3 MB)

Die Befehlszeilentools sind allgemein verfügbar (GA-Version), sie werden jedoch mit dem Installationspaket für SQL Server 2019 (15.x)SQL Server 2019 (15.x) veröffentlicht.The command line tools are General Availability (GA), however they are being released with the installer package for SQL Server 2019 (15.x)SQL Server 2019 (15.x).

VersionsinformationenVersion Information

Releasenummer: 15.0Release number: 15.0
Buildnummer: 15.0.1300.359Build number: 15.0.1300.359
Releasedatum: 13. März 2019Release date: March 13, 2019

Die neue Version von SQLCMD unterstützt die Azure AD-Authentifizierung, einschließlich der Multi-Factor Authentication-Unterstützung (MFA) für SQL-Datenbank, SQL Data Warehouse und Always Encrypted-Features.The new version of SQLCMD supports Azure AD authentication, including Multi-Factor Authentication (MFA) support for SQL Database, SQL Data Warehouse, and Always Encrypted features. Die neue BCP unterstützt die Azure AD-Authentifizierung, einschließlich der Multi-Factor Authentication-Unterstützung (MFA) für SQL-Datenbank und SQL Data Warehouse.The new BCP supports Azure AD authentication, including Multi-Factor Authentication (MFA) support for SQL Database and SQL Data Warehouse.

Systemanforderungen Windows 10, Windows 7, Windows 8, Windows 8.1, Windows Server 2008, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2. Für diese Komponente sind der Windows Installer 4.5 und der Microsoft ODBC Driver 17.3.1.1 for SQL Server erforderlich.System Requirements Windows 10 , Windows 7, Windows 8, Windows 8.1, Windows Server 2008, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2 This component requires both Windows Installer 4.5 and Microsoft ODBC Driver 17.3.1.1 for SQL Server.

Um den Befehl sqlcmd Version Execute sqlcmd -? zu überprüfen und zu bestätigen, dass 15.0.1300.359 Version oder höher verwendet wird.To check the SQLCMD version execute sqlcmd -? command and confirm that 15.0.1300.359 version or higher is in use.

Hinweis

Sie benötigen Version 13,1 oder höher, um Always encrypted (-g) und Azure Active Directory Authentifizierung (-G) zu unterstützen.You need version 13.1 or higher to support Always Encrypted (-g) and Azure Active Directory authentication (-G). (Möglicherweise haben Sie mehrere Versionen von „sqlcmd.exe“ auf Ihrem Computer installiert.(You may have several versions of sqlcmd.exe installed on your computer. Achten Sie darauf, dass Sie die richtige Version verwenden.Be sure you are using the correct version. Um die Version zu bestimmen, führen Sie sqlcmd -?aus.)To determine the version, execute sqlcmd -?.)

Sie können das Hilfsprogramm sqlcmd aus Azure Cloud Shell testen, da es standardmäßig vorinstalliert ist: Starten Sie Cloud ShellYou can try the sqlcmd utility from Azure Cloud Shell as it is pre-installed by default: Launch Cloud Shell

Um sqlcmd-Anweisungen in SSMS auszuführen, wählen Sie in der Navigations-Dropdownliste oben im Menü „Abfrage“ den Befehl „SQLCMD-Modus“ aus.To run sqlcmd statements in SSMS, select SQLCMD Mode from the top navigation Query Menu dropdown.

Wichtig

SQL Server Management StudioSQL Server Management Studio (SSMS) verwendet den Microsoft .NET Framework.NET Framework-SqlClient für die Ausführung im regulären Modus und im SQLCMD-Modus des Abfrage-Editors.(SSMS) uses the Microsoft .NET Framework.NET Framework SqlClient for execution in regular and SQLCMD mode in Query Editor. Beim Ausführen von sqlcmd über die Befehlszeile verwendet sqlcmd den ODBC-Treiber.When sqlcmd is run from the command-line, sqlcmd uses the ODBC driver. Da unterschiedliche Standardoptionen gelten können, führt die Ausführung derselben Abfrage im SQLCMD-Modus von SQL Server Management StudioSQL Server Management Studio und im Hilfsprogramm sqlcmd möglicherweise zu unterschiedlichen Ergebnissen.Because different default options may apply, you might see different behavior when you execute the same query in SQL Server Management StudioSQL Server Management Studio in SQLCMD Mode and in the sqlcmd utility.

Aktuell ist für sqlcmd kein Leerzeichen zwischen der Befehlszeilenoption und dem Wert erforderlich.Currently, sqlcmd doesn't require a space between the command-line option and the value. In einer zukünftigen Version kann jedoch ein Leerzeichen zwischen der Befehlszeilenoption und dem Wert erforderlich sein.However, in a future release, a space may be required between the command-line option and the value.

Weitere Themen:Other topics:

SyntaxSyntax

sqlcmd   
   -a packet_size  
   -A (dedicated administrator connection)  
   -b (terminate batch job if there is an error)  
   -c batch_terminator  
   -C (trust the server certificate)  
   -d db_name  
   -e (echo input)  
   -E (use trusted connection)  
   -f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage] 
   -g (enable column encryption) 
   -G (use Azure Active Directory for authentication)
   -h rows_per_header  
   -H workstation_name  
   -i input_file  
   -I (enable quoted identifiers)  
   -j (Print raw error messages)
   -k[1 | 2] (remove or replace control characters)  
   -K application_intent  
   -l login_timeout  
   -L[c] (list servers, optional clean output)  
   -m error_level  
   -M multisubnet_failover  
   -N (encrypt connection)  
   -o output_file  
   -p[1] (print statistics, optional colon format)  
   -P password  
   -q "cmdline query"  
   -Q "cmdline query" (and exit)  
   -r[0 | 1] (msgs to stderr)  
   -R (use client regional settings)  
   -s col_separator  
   -S [protocol:]server[instance_name][,port]  
   -t query_timeout  
   -u (unicode output file)  
   -U login_id  
   -v var = "value"  
   -V error_severity_level  
   -w column_width  
   -W (remove trailing spaces)  
   -x (disable variable substitution)  
   -X[1] (disable commands, startup script, environment variables, optional exit)  
   -y variable_length_type_display_width  
   -Y fixed_length_type_display_width  
   -z new_password   
   -Z new_password (and exit)  
   -? (usage)  

BefehlszeilenoptionenCommand-line Options

AnmeldungsvorgängeLogin-Related Options
-A-A
Bewirkt die Anmeldung bei SQL Server über eine dedizierte Administratorverbindung (DAC).Signs in to SQL Server with a Dedicated Administrator Connection (DAC). Diese Verbindungsart wird verwendet, um Serverprobleme zu behandeln.This kind of connection is used to troubleshoot a server. Diese Verbindung funktioniert nur mit Server Computern, die DAC unterstützen.This connection works only with server computers that support DAC. Wenn DAC nicht verfügbar ist, generiert sqlcmd eine Fehlermeldung und wird dann beendet.If DAC is not available, sqlcmd generates an error message, and then exits. Weitere Informationen zu DAC finden Sie unter Diagnoseverbindung für Datenbankadministratoren.For more information about DAC, see Diagnostic Connection for Database Administrators. Die Option "-A" wird mit der Option "-G" nicht unterstützt.The -A option isn't supported with the -G option. Beim Herstellen einer Verbindung mit SQL-Datenbank mithilfe von-a müssen Sie SQL Server-Administrator sein.When connecting to SQL Database using -A, you must be a SQL server administrator. Die DAC ist für einen Azure Active Directory-Administrator nicht verfügbar.DAC isn't available for an Azure Active Directory administrator.

-C-C
Dieser Schalter wird vom Client verwendet, um ihn so zu konfigurieren, dass er dem Serverzertifikat ohne Überprüfung implizit vertraut.This switch is used by the client to configure it to implicitly trust the server certificate without validation. Diese Option entspricht der ADO.NET-Option TRUSTSERVERCERTIFICATE = true.This option is equivalent to the ADO.NET option TRUSTSERVERCERTIFICATE = true.

-d db_name-d db_name
Gibt beim Starten von sqlcmd eine USE db_name-Anweisung aus.Issues a USE db_name statement when you start sqlcmd. Durch diese Option wird die sqlcmd -Skriptvariable SQLCMDDBNAME festgelegt.This option sets the sqlcmd scripting variable SQLCMDDBNAME. Dieser Parameter gibt die anfängliche Datenbank an.This parameter specifies the initial database. Der Standardwert ist die Standarddatenbank-Eigenschaft der Anmelde-ID.The default is your login's default-database property. Wenn die Datenbank nicht vorhanden ist, wird eine Fehlermeldung generiert und sqlcmd beendet.If the database does not exist, an error message is generated and sqlcmd exits.

-l Anmeldungstimeout-l login_timeout
Gibt an, wie viele Sekunden bei der Herstellung einer Verbindung mit einem Server verstreichen dürfen, bevor für eine sqlcmd -Anmeldung beim ODBC-Treiber ein Timeout eintritt.Specifies the number of seconds before a sqlcmd login to the ODBC driver times out when you try to connect to a server. Durch diese Option wird die sqlcmd -Skriptvariable SQLCMDLOGINTIMEOUT festgelegt.This option sets the sqlcmd scripting variable SQLCMDLOGINTIMEOUT. Der Standardwert für das Timeout einer sqlcmd -Anmeldung beträgt acht Sekunden.The default time-out for login to sqlcmd is eight seconds. Wenn Sie die -G -Option zum Herstellen einer Verbindung mit SQL-Datenbank oder SQL Data Warehouse und zur Authentifizierung mithilfe von Azure Active Directory empfiehlt sich ein Timeoutwert von mindestens 30 Sekunden.When using the -G option to connect to SQL Database or SQL Data Warehouse and authenticate using Azure Active Directory, a timeout value of at least 30 seconds is recommended. Der Timeoutwert für den Anmeldungszeitraum muss eine Zahl zwischen 0 und 65534 sein.The login time-out must be a number between 0 and 65534. Wenn der angegebene Wert kein numerischer Wert ist oder außerhalb dieses Bereichs liegt, generiert sqlcmd eine Fehlermeldung.If the value supplied is not numeric or does not fall into that range, sqlcmd generates an error message. Mit dem Wert 0 wird eine unbegrenzte Wartezeit festgelegt.A value of 0 specifies time-out to be infinite.

-E-E
Verwendet eine vertrauenswürdige Verbindung anstelle eines Benutzernamens und eines Kennworts für die Anmeldung bei SQL Server.Uses a trusted connection instead of using a user name and password to sign in to SQL Server. Standardmäßig wird von sqlcmd die vertrauenswürdige Verbindung verwendet, wenn -E nicht angegeben ist.By default, without -E specified, sqlcmd uses the trusted connection option.

Die Option -E ignoriert mögliche Umgebungsvariableneinstellungen für Benutzernamen und Kennwörter, z.B. SQLCMDPASSWORD.The -E option ignores possible user name and password environment variable settings such as SQLCMDPASSWORD. Wird die Option -E zusammen mit der Option -U oder der Option -P verwendet, wird eine Fehlermeldung generiert.If the -E option is used together with the -U option or the -P option, an error message is generated.

-g-g
Legt „Column Encryption Setting“ auf Enabledfest.Sets the Column Encryption Setting to Enabled. Weitere Informationen hierzu finden Sie unter Always Encrypted.For more information, see Always Encrypted. Es werden nur Hauptschlüssel unterstützt, die im Windows-Zertifikatspeicher gespeichert sind.Only master keys stored in Windows Certificate Store are supported. Der Schalter -g erfordert mindestens sqlcmd Version 13.1.The -g switch requires at least sqlcmd version 13.1. Um die Version zu bestimmen, führen Sie sqlcmd -?aus.To determine your version, execute sqlcmd -?.

-G-G
Dieser Schalter wird vom Client beim Herstellen einer Verbindung mit SQL-Datenbank oder SQL Data Warehouse verwendet, um anzugeben, dass der Benutzer mithilfe der Azure Active Directory-Authentifizierung authentifiziert werden soll.This switch is used by the client when connecting to SQL Database or SQL Data Warehouse to specify that the user be authenticated using Azure Active Directory authentication. Durch diese Option wird die sqlcmd -Skriptvariable „SQLCMDUSEAAD = true“ festgelegt.This option sets the sqlcmd scripting variable SQLCMDUSEAAD = true. Der Schalter -G erfordert mindestens sqlcmd Version 13.1.The -G switch requires at least sqlcmd version 13.1. Um die Version zu bestimmen, führen Sie sqlcmd -?aus.To determine your version, execute sqlcmd -?. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit SQL-Datenbank oder SQL Data Warehouse unter Verwendung der Azure Active Directory-Authentifizierung.For more information, see Connecting to SQL Database or SQL Data Warehouse By Using Azure Active Directory Authentication. Die Option "-A" wird mit der Option "-G" nicht unterstützt.The -A option is not supported with the -G option.

Wichtig

Die -G-Option gilt nur für Azure SQL-Datenbank und Azure Data Warehouse.The -G option only applies to Azure SQL Database and Azure Data Warehouse. Die in AAD integrierte und interaktive Authentifizierung wird unter Linux und macOS derzeit nicht unterstützt.AAD Integrated and Interactive Authentication is not currently supported on Linux or macOS.

  • Azure Active Directory-Benutzername und -Kennwort:Azure Active Directory Username and Password:

    Wenn Sie einen Azure Active Directory-Benutzernamen und das zugehörige Kennwort verwenden möchten, geben Sie die Option -G zusammen mit dem Benutzernamen und dem Kennwort an, indem Sie die Optionen -U und -P bereitstellen.When you want to use an Azure Active Directory user name and password, you can provide the -G option and also use the user name and password by providing the -U and -P options.

    Sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW -U bob@contoso.com -P MyAADPassword -G 
    

    Der Parameter "-G" generiert die folgende Verbindungs Zeichenfolge im Back-End:The -G parameter generates the following connection string in the backend:

     SERVER = Target_DB_or_DW.testsrv.database.windows.net;UID= bob@contoso.com;PWD=MyAADPassword;AUTHENTICATION = ActiveDirectoryPassword 
    
  • Integrierte Azure Active Directory-AuthentifizierungAzure Active Directory Integrated

    Wenn Sie die integrierte Azure Active Directory-Authentifizierung verwenden möchten, geben Sie die Option -G ohne Benutzername und Kennwort an.For Azure Active Directory Integrated authentication, provide the -G option without a user name or password. Die in AAD integrierte Authentifizierung wird unter Linux und macOS derzeit nicht unterstützt.AAD Integrated Authentication is not currently supported on Linux or macOS.

    Sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G
    

    Dadurch wird die folgende Verbindungszeichenfolge im Back-End generiert:This will generate the following connection string in the backend:

    SERVER = Target_DB_or_DW.testsrv.database.windows.net Authentication = ActiveDirectoryIntegrated; Trusted_Connection=NO
    

    Hinweis

    Die -E-Option (Trusted_Connection) kann nicht zusammen mit der -G-Option verwendet werden.The -E option (Trusted_Connection) cannot be used along with the -G option.

  • Azure Active Directory InteractiveAzure Active Directory Interactive

    Durch die interaktive Azure AD-Authentifizierung für Azure SQL-Datenbank und SQL Data Warehouse können Sie eine interaktive Methode verwenden, die die mehrstufige Authentifizierung unterstützt.The Azure AD Interactive authentication for Azure SQL Database and SQL Data Warehouse, allows you to use an interactive method supporting multi-factor authentication. Weitere Informationen finden Sie unter Interaktive Active Directory-Authentifizierung.For more information, see Active Directory Interactive Authentication.

    Für die interaktive Azure AD-Authentifizierung sind sqlcmd, Version 15.0.1000.34 oder höher und ODBC, Version 17.2 oder höher erforderlich.Azure AD interactive requires sqlcmd version 15.0.1000.34 or later as well as ODBC version 17.2 or later.

    Geben Sie zum Aktivieren der interaktiven Authentifizierung die Option „-G“ nur mit dem Benutzernamen (-U) und ohne ein Kennwort an.To enable interactive authentication, provide -G option with user name (-U) only, without a password.

    Im folgenden Beispiel werden Daten mithilfe des interaktiven Azure AD-Modus exportiert. Hierbei wird ein Benutzername angegeben, der ein AAD-Konto darstellt.The following example exports data using Azure AD interactive mode indicating username where user represents an AAD account. Dies ist das gleiche Beispiel, das im vorherigen Abschnitt verwendet wurde: Azure Active Directory-Benutzername und -Kennwort.This is the same example used in the previous section: Azure Active Directory Username and Password.

    Im interaktiven Modus muss ein Kennwort manuell eingegeben werden.Bei Konten mit mehrstufiger Authentifizierung müssen Sie Ihre konfigurierte MFA-Authentifizierungsmethode vervollständigen.Interactive mode requires a password to be manually entered, or for accounts with multi-factor authentication enabled, complete your configured MFA authentication method.

    sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW -G -U alice@aadtest.onmicrosoft.com
    

    Mit dem vorherigen Befehl wird die folgende Verbindungs Zeichenfolge im Back-End generiert:The previous command generates the following connection string in the backend:

    SERVER = Target_DB_or_DW.testsrv.database.windows.net;UID=alice@aadtest.onmicrosoft.com; AUTHENTICATION = ActiveDirectoryInteractive   
    

    Für den Fall, dass ein Azure AD-Benutzer auch ein Benutzer eines Domänenverbunds ist und ein Windows-Konto verwendet, enthält der in der Befehlszeile erforderliche Benutzername dessen Domänenkonto (Beispiel joe@contoso.com unten):In case an Azure AD user is a domain federated user using a Windows account, the user name required in the command-line, contains its domain account (for example, joe@contoso.com see below):

    sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW -G -U joe@contoso.com  
    

    Die Gastbenutzeralias wird verwendet, wenn Gastbenutzer in einer bestimmten Azure AD-Instanz vorhanden und Teil einer Gruppe von SQL-Datenbank sind, die über Datenbankberechtigungen zum Ausführen des sqlcmd-Befehls verfügt (z. B. *keith0@adventureworks.com* ).If guest users exist in a specific Azure AD and are part of a group that exists in SQL DB that has database permissions to execute the sqlcmd command, their guest user alias is used (for example, *keith0@adventureworks.com*).

    Wichtig

    Es gibt ein bekanntes Problem, wenn Sie -G die -U -Option und die-Option mit sqlcmd verwenden, -G bei der die -U -Option vor der-Option zu Fehlern bei der Authentifizierung führen kann.There is a known issue when using the -G and -U option with SQLCMD, where putting the -U option before the -G option may cause authentication to fail. Beginnen Sie immer mit -G der-Option, -U gefolgt von der-Option.Always start with the -G option followed by the -U option.

-H Arbeitsstationsname-H workstation_name
Der Name einer Arbeitsstation.A workstation name. Durch diese Option wird die sqlcmd -Skriptvariable SQLCMDWORKSTATION festgelegt.This option sets the sqlcmd scripting variable SQLCMDWORKSTATION. Der Name der Arbeitsstation wird in der hostname -Spalte der sys.sysprocesses -Katalogsicht aufgeführt, und der Name kann mithilfe der gespeicherten Prozedur sp_whozurückgegeben werden.The workstation name is listed in the hostname column of the sys.sysprocesses catalog view and can be returned using the stored procedure sp_who. Wenn diese Option nicht angegeben ist, wird standardmäßig der Name des aktuellen Computers angenommen.If this option is not specified, the default is the current computer name. Mithilfe dieses Namens können verschiedene sqlcmd -Sitzungen identifiziert werden.This name can be used to identify different sqlcmd sessions.

-j Zeigt unformatierte Fehlermeldungen auf dem Bildschirm an.-j Prints raw error messages to the screen.

-K Anwendungszweck-K application_intent
Deklariert den Arbeitsauslastungstyp der Anwendung beim Herstellen einer Verbindung mit einem Server.Declares the application workload type when connecting to a server. Der einzige derzeit unterstützte Wert ist ReadOnly.The only currently supported value is ReadOnly. Wenn -K nicht angegeben ist, unterstützt das sqlcmd-Hilfsprogramm keine Konnektivität mit einem sekundären Replikat in einer AlwaysOn-Verfügbarkeitsgruppe.If -K is not specified, the sqlcmd utility will not support connectivity to a secondary replica in an Always On availability group. Weitere Informationen finden Sie unter Aktive sekundäre Replikate: Lesbare sekundäre Replikate (AlwaysOn-Verfügbarkeitsgruppen).For more information, see Active Secondaries: Readable Secondary Replica (Always On Availability Groups)

-M Multisubnetz-Failover-M multisubnet_failover
Geben Sie immer -M an, wenn Sie eine Verbindung mit dem Verfügbarkeitsgruppenlistener einer SQL Server-Verfügbarkeitsgruppe oder einer SQL Server-Failoverclusterinstanz herstellen.Always specify -M when connecting to the availability group listener of a SQL Server availability group or a SQL Server Failover Cluster Instance. -M gewährleistet eine schnellere Erkennung und Verbindung mit dem (gerade) aktiven Server.-M provides for faster detection of and connection to the (currently) active server. Wenn -M nicht angegeben ist, ist -M deaktiviert.If -M is not specified, -M is off. Weitere Informationen finden Sie unter Listener, Clientkonnektivität, Anwendungsfailover, Erstellung und Konfiguration von Verfügbarkeitsgruppen (SQL Server), Failoverclustering und AlwaysOn-Verfügbarkeitsgruppen (SQL Server) und Aktive Sekundäre: Lesbare sekundäre Replikate (AlwaysOn-Verfügbarkeitsgruppen).For more information about Listeners, Client Connectivity, Application Failover, Creation and Configuration of Availability Groups (SQL Server), Failover Clustering and Always On Availability Groups (SQL Server), and Active Secondaries: Readable Secondary Replicas(Always On Availability Groups).

-N-N
Dieser Schalter wird vom Client verwendet, um eine verschlüsselte Verbindung anzufordern.This switch is used by the client to request an encrypted connection.

-P Kennwort-P password
Ein vom Benutzer angegebenes Kennwort.Is a user-specified password. Bei Kennwörtern wird nach Groß- und Kleinschreibung unterschieden.Passwords are case-sensitive. Wenn die Option -U verwendet wird, nicht aber die Option -P , und die SQLCMDPASSWORD-Umgebungsvariable nicht festgelegt wurde, wird der Benutzer von sqlcmd zur Angabe eines Kennworts aufgefordert.If the -U option is used and the -P option is not used, and the SQLCMDPASSWORD environment variable has not been set, sqlcmd prompts the user for a password. Die Verwendung des NULL-Kennworts wird nicht empfohlen, aber Sie können das NULL-Kennwort angeben, indem Sie ein paar zusammenhängender doppelter Anführungszeichen für den Parameterwert verwenden:We do not recommend the use of the null password, but you can specify the null password by using a pair of contiguous double-quotation marks for the parameter value:

  • -P ""-P ""

Es wird empfohlen, ein sicheres Kennwort zu verwenden.We recommend that you use a strong password.

Verwenden Sie ein sicheres Kennwort! Use a strong password!

Die Aufforderung zur Eingabe des Kennworts wird folgendermaßen an der Konsole ausgegeben: Password:The password prompt is displayed by printing the password prompt to the console, as follows: Password:

Die Benutzereingabe bleibt verborgen,User input is hidden. d. h. es erfolgt keine Anzeige, und der Cursor bleibt an der Anfangsposition.This means that nothing is displayed and the cursor stays in position.

Über die SQLCMDPASSWORD-Umgebungsvariable können Sie ein Standardkennwort für die aktuelle Sitzung festlegen.The SQLCMDPASSWORD environment variable lets you set a default password for the current session. Aus diesem Grund ist die Hartcodierung von Kennwörtern in Batchdateien nicht notwendig.Therefore, passwords do not have to be hard-coded into batch files.

Im folgenden Beispiel wird zuerst die SQLCMDPASSWORD-Variable an der Eingabeaufforderung festgelegt und dann auf das Hilfsprogramm sqlcmd zugegriffen.The following example first sets the SQLCMDPASSWORD variable at the command prompt and then accesses the sqlcmd utility. Geben Sie an der Eingabeaufforderung Folgendes ein:At the command prompt, type:

SET SQLCMDPASSWORD= p@a$$w0rd
Geben Sie Folgendes an der daraufhin angezeigten Eingabeaufforderung ein:At the following command prompt, type:

sqlcmd

Wenn die Kombination aus Benutzername und Kennwort falsch ist, wird eine Fehlermeldung generiert.If the user name and password combination is incorrect, an error message is generated.

HINWEIS!NOTE! Die OSQLPASSWORD-Umgebungsvariable wurde aus Gründen der Abwärtskompatibilität beibehalten.The OSQLPASSWORD environment variable was kept for backward compatibility. Die SQLCMDPASSWORD-Umgebungsvariable hat Vorrang vor der OSQLPASSWORD-Umgebungsvariablen.The SQLCMDPASSWORD environment variable takes precedence over the OSQLPASSWORD environment variable. Da OSQLPASSWORD nun nicht mehr freigegeben ist, können die Hilfsprogramme sqlcmd und osql ohne Störungen nebeneinander verwendet werden.Now that OSQLPASSWORD is no longer shared, the utilities sqlcmd and osql can be used next to each other without interference. Alte Skripts werden weiterhin funktionieren.Old scripts will continue to work.

Wird die Option -P zusammen mit der Option -E verwendet, wird eine Fehlermeldung generiert.If the -P option is used with the -E option, an error message is generated.

Werden nach der Option -P mehrere Argumente angegeben, wird eine Fehlermeldung generiert und das Programm beendet.If the -P option is followed by more than one argument, an error message is generated and the program exits.

-S [protocol:]server[ \ instance_name][ , port]-S [protocol:]server[\instance_name][,port]
Gibt die SQL Server-Instanz an, mit der eine Verbindung hergestellt werden soll.Specifies the instance of SQL Server to which to connect. Durch die Option wird die sqlcmd -Skriptvariable SQLCMDSERVER festgelegt.It sets the sqlcmd scripting variable SQLCMDSERVER.

Geben Sie server_name an, um eine Verbindung mit der Standardinstanz von SQL Server auf diesem Servercomputer herzustellen.Specify server_name to connect to the default instance of SQL Server on that server computer. Geben Sie server_name [ \ instance_name ] an, um eine Verbindung mit der benannten Instanz von SQL Server auf diesem Servercomputer herzustellen.Specify server_name [ \instance_name ] to connect to a named instance of SQL Server on that server computer. Wenn kein Servercomputer angegeben wird, stellt sqlcmd eine Verbindung mit der Standardinstanz von SQL Server auf dem lokalen Computer her.If no server computer is specified, sqlcmd connects to the default instance of SQL Server on the local computer. Diese Option ist erforderlich, wenn sqlcmd von einem Remotecomputer im Netzwerk ausgeführt wird.This option is required when you execute sqlcmd from a remote computer on the network.

Protokoll kann Folgendes sein: tcp (TCP/IP), lpc (Shared Memory) oder np (Named Pipes).protocol can be tcp (TCP/IP), lpc (shared memory), or np (named pipes).

Wenn Sie server_name [ \ instance_name ] beim Starten von sqlcmd nicht angeben, sucht SQL Server nach der SQLCMDSERVER-Umgebungsvariable und verwendet diese.If you do not specify a server_name [ \instance_name ] when you start sqlcmd, SQL Server checks for and uses the SQLCMDSERVER environment variable.

Hinweis

Die OSQLSERVER-Umgebungsvariable wurde aus Gründen der Abwärtskompatibilität beibehalten.The OSQLSERVER environment variable has been kept for backward compatibility. Die SQLCMDSERVER-Umgebungsvariable hat Vorrang vor der OSQLSERVER-Umgebungsvariablen. Das bedeutet, dass sqlcmd und osql störungsfrei parallel verwendet werden können und dass alte Skripts weiterhin funktionsfähig sind.The SQLCMDSERVER environment variable takes precedence over the OSQLSERVER environment variable; this means that sqlcmd and osql can be used next to each other without interference and that old scripts will continue to work.

-U Anmelde-ID-U login_id
Dies ist der Anmeldename oder der für die eigenständige Datenbank verwendete Benutzername.Is the login name or contained database user name. Für Benutzer einer eigenständigen Datenbank müssen Sie die Option für den Datenbanknamen (-d) angeben.For contained database users, you must provide the database name option (-d).

Hinweis

Die OSQLUSER-Umgebungsvariable steht aus Gründen der Abwärtskompatibilität zur Verfügung.The OSQLUSER environment variable is available for backward compatibility. Die SQLCMDUSER-Umgebungsvariable ist bezüglich der OSQLUSER-Umgebungsvariable vorrangig.The SQLCMDUSER environment variable takes precedence over the OSQLUSER environment variable. Dies bedeutet, dass sqlcmd und osql störungsfrei parallel verwendet werden können.This means that sqlcmd and osql can be used next to each other without interference. Es bedeutet ferner, dass vorhandene osql -Skripts weiterhin funktionieren.It also means that existing osql scripts will continue to work.

Wenn weder die Option -U noch die Option -P angegeben wird, versucht sqlcmd, die Verbindung im Microsoft Windows-Authentifizierungsmodus herzustellen.If neither the -U option or the -P option is specified, sqlcmd tries to connect by using Microsoft Windows Authentication mode. Die Authentifizierung basiert auf dem Windows-Konto des Benutzers, der sqlcmdausführt.Authentication is based on the Windows account of the user who is running sqlcmd.

Wird die Option -U zusammen mit der Option -E verwendet (weiter unten in diesem Artikel beschrieben), wird eine Fehlermeldung generiert.If the -U option is used with the -E option (described later in this article), an error message is generated. Werden nach der Option -U mehrere Argumente angegeben, wird eine Fehlermeldung generiert und das Programm beendet.If the -U option is followed by more than one argument, an error message is generated and the program exits.

-z neues_Kennwort-z new_password
Kennwort ändern:Change password:

sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd

-Z neues_Kennwort-Z new_password
Kennwort ändern und beenden:Change password and exit:

sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd

Eingabe-/AusgabeoptionenInput/Output Options
-f Codepage | i: Codepage[ ,o: Codepage] | o: Codepage[ ,i: Codepage]-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]
Gibt die Eingabe- und Ausgabecodepages an.Specifies the input and output code pages. Die Codepagenummer ist ein numerischer Wert, der eine installierte Windows-Codepage angibt.The codepage number is a numeric value that specifies an installed Windows code page.

Regeln zum Konvertieren von Codepages:Code-page conversion rules:

  • Wenn keine Codepages angegeben sind, verwendet sqlcmd die aktuelle Codepage sowohl für Eingabe- als auch für Ausgabedateien, außer wenn es sich bei der Eingabedatei um eine Unicode-Datei handelt, da in diesem Fall keine Konvertierung erforderlich ist.If no code pages are specified, sqlcmd will use the current code page for both input and output files, unless the input file is a Unicode file, in which case no conversion is required.

  • sqlcmd erkennt Unicode-Eingabedateien des Formats Big-Endian bzw. Little-Endian automatisch.sqlcmd automatically recognizes both big-endian and little-endian Unicode input files. Wenn die Option -u angegeben wurde, handelt es sich bei der Ausgabe stets um Unicode-Dateien des Formats Little-Endian.If the -u option has been specified, the output will always be little-endian Unicode.

  • Wenn keine Ausgabedatei angegeben wurde, handelt es sich bei der Ausgabe-Codepage um die Codepage der Konsole.If no output file is specified, the output code page will be the console code page. Auf diese Weise kann die Ausgabe richtig auf der Konsole angezeigt werden.This approach enables the output to be displayed correctly on the console.

  • Wenn mehrere Eingabedateien angegeben wurden, wird davon ausgegangen, dass sie dieselbe Codepage verwenden.Multiple input files are assumed to be of the same code page. Unicode- und Nicht-Unicode-Eingabedateien können gemischt verwendet werden.Unicode and non-Unicode input files can be mixed.

Geben Sie an der Eingabeaufforderung chcp ein, um die Codepage von Cmd.exe zu überprüfen.Enter chcp at the command prompt to verify the code page of Cmd.exe.

-i Eingabedatei [ , Eingabe_file2...]-i input_file[,input_file2...]
Identifiziert die Datei, die einen Batch mit SQL-Anweisungen oder gespeicherten Prozeduren enthält.Identifies the file that contains a batch of SQL statements or stored procedures. Sie können mehrere Dateien angeben, die der Reihe nach gelesen und verarbeitet werden.Multiple files may be specified that will be read and processed in order. Verwenden Sie keine Leerzeichen zwischen Dateinamen.Do not use any spaces between file names. sqlcmd prüft zunächst, ob alle angegebenen Dateien vorhanden sind.sqlcmd will first check to see whether all the specified files exist. Wenn eine oder mehrere Dateien nicht vorhanden sind, wird sqlcmd beendet.If one or more files do not exist, sqlcmd will exit. Die Optionen -i und -Q/-q schließen sich gegenseitig aus.The -i and the -Q/-q options are mutually exclusive.

Beispiele für Pfade:Path examples:

-i C:\<filename>  
-i \\<Server>\<Share$>\<filename>  
-i "C:\Some Folder\<file name>"  

Dateipfade, die Leerzeichen enthalten, müssen in Anführungszeichen eingeschlossen werden.File paths that contain spaces must be enclosed in quotation marks.

Diese Option kann mehrmals verwendet werden: -iinput_file -II input_file.This option may be used more than once: -iinput_file -II input_file.

-o Ausgabedatei-o output_file
Identifiziert die Datei, die die Ausgabe von sqlcmderhält.Identifies the file that receives output from sqlcmd.

Ist -u angegeben, wird die Ausgabedatei im Unicode-Format gespeichert.If -u is specified, the output_file is stored in Unicode format. Wenn der Dateiname ungültig ist, wird eine Fehlermeldung generiert und sqlcmd beendet.If the file name is not valid, an error message is generated, and sqlcmd exits. sqlcmd unterstützt keine parallelen Schreibvorgänge mehrerer sqlcmd -Prozesse in die gleiche Datei.sqlcmd does not support concurrent writing of multiple sqlcmd processes to the same file. In diesem Fall wäre die Dateiausgabe beschädigt oder fehlerhaft.The file output will be corrupted or incorrect. Weitere Informationen finden Sie unter der Schalter -f ist auch für Dateiformate relevant.See the -f switch is also relevant to file formats. Falls sie noch nicht vorhanden ist, wird die Datei erstellt.This file will be created if it does not exist. Eine Datei mit demselben Namen aus einer früheren sqlcmd -Sitzung wird überschrieben.A file of the same name from a prior sqlcmd session will be overwritten. Bei der hier angegebenen Datei handelt es sich nicht um die stdout -Datei.The file specified here is not the stdout file. Wenn eine stdout-Datei angegeben ist, wird diese Datei nicht verwendet.If a stdout file is specified, this file will not be used.

Beispiele für Pfade:Path examples:

-o C:< filename>  
-o \\<Server>\<Share$>\<filename>  
-o "C:\Some Folder\<file name>"  

Dateipfade, die Leerzeichen enthalten, müssen in Anführungszeichen eingeschlossen werden.File paths that contain spaces must be enclosed in quotation marks.

-r[0 | 1]-r[0 | 1]
Leitet die Ausgabe der Fehlermeldung auf den Bildschirm um (stderr).Redirects the error message output to the screen (stderr). Wenn Sie keinen Parameter bzw. wenn Sie 0angeben, werden nur Fehlermeldungen mit dem Schweregrad 11 oder höher umgeleitet.If you do not specify a parameter or if you specify 0, only error messages that have a severity level of 11 or higher are redirected. Wenn Sie 1angeben, wird die gesamte Fehlermeldungsausgabe (einschließlich der Ausgabe von PRINT) umgeleitet.If you specify 1, all error message output including PRINT is redirected. Dies hat keine Wirkung, wenn Sie die Option -o verwenden.Has no effect if you use -o. Standardmäßig werden Meldungen an stdoutgesendet.By default, messages are sent to stdout.

-R-R
Bewirkt, dass sqlcmd aus SQL Server abgerufene numerische Spalten sowie Währungs-, Datums- und Zeitspalten basierend auf dem Gebietsschema des Clients lokalisiert.Causes sqlcmd to localize numeric, currency, date, and time columns retrieved from SQL Server based on the client's locale. Standardmäßig werden diese Spalten entsprechend den regionalen Einstellungen des Servers angezeigt.By default, these columns are displayed using the server's regional settings.

-u-u
Gibt an, dass Ausgabedatei unabhängig vom Format von Eingabedateiim Unicode-Format gespeichert wird.Specifies that output_file is stored in Unicode format, regardless of the format of input_file.

AbfrageausführungsoptionenQuery Execution Options
-e-e
Schreibt Eingabeskripts in das Standardausgabegerät (stdout).Writes input scripts to the standard output device (stdout).

-I-I
Legt die SET QUOTED_IDENTIFIER-Verbindungsoption auf ON fest.Sets the SET QUOTED_IDENTIFIER connection option to ON. Die Standardeinstellung ist OFF.By default, it is set to OFF. Weitere Informationen finden Sie unter SET QUOTED_IDENTIFIER (Transact-SQL).For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

-q " Befehlszeilenabfrage "-q " cmdline query "
Führt eine Abfrage aus, wenn sqlcmd startet, beendet sqlcmd jedoch nicht, nachdem die Ausführung der Abfrage abgeschlossen ist.Executes a query when sqlcmd starts, but does not exit sqlcmd when the query has finished running. Es können mehrere durch Semikolons getrennte Abfragen ausgeführt werden.Multiple-semicolon-delimited queries can be executed. Schließen Sie die Abfrage in Anführungszeichen ein, wie im folgenden Beispiel gezeigt wird.Use quotation marks around the query, as shown in the following example.

Geben Sie an der Eingabeaufforderung Folgendes ein:At the command prompt, type:

sqlcmd -d AdventureWorks2012 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2012 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"

Wichtig

Verwenden Sie nicht das Abschlusszeichen GO in der Abfrage.Do not use the GO terminator in the query.

Wenn -b zusammen mit dieser Option angegeben wird, wird sqlcmd beim Auftreten eines Fehlers beendet.If -b is specified together with this option, sqlcmd exits on error. Der Schalter -b wird weiter unten in diesem Artikel beschrieben.-b is described later in this article.

-Q " Befehlszeilenabfrage "-Q " cmdline query "
Führt eine Abfrage aus, wenn sqlcmd startet, und beendet sqlcmdunmittelbar im Anschluss.Executes a query when sqlcmd starts and then immediately exits sqlcmd. Es können mehrere durch Semikolons getrennte Abfragen ausgeführt werden.Multiple-semicolon-delimited queries can be executed.

Schließen Sie die Abfrage in Anführungszeichen ein, wie im folgenden Beispiel gezeigt wird.Use quotation marks around the query, as shown in the following example.

Geben Sie an der Eingabeaufforderung Folgendes ein:At the command prompt, type:

sqlcmd -d AdventureWorks2012 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

sqlcmd -d AdventureWorks2012 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"

Wichtig

Verwenden Sie nicht das Abschlusszeichen GO in der Abfrage.Do not use the GO terminator in the query.

Wenn -b zusammen mit dieser Option angegeben wird, wird sqlcmd beim Auftreten eines Fehlers beendet.If -b is specified together with this option, sqlcmd exits on error. Der Schalter -b wird weiter unten in diesem Artikel beschrieben.-b is described later in this article.

-t Abfragetimeout-t query_timeout
Gibt an, wie viele Sekunden verstreichen, bevor für einen Befehl (oder eine SQL-Anweisung) ein Timeout eintritt. Durch diese Option wird die sqlcmd -Skriptvariable SQLCMDSTATTIMEOUT festgelegt.Specifies the number of seconds before a command (or SQL statement) times out. This option sets the sqlcmd scripting variable SQLCMDSTATTIMEOUT. Wenn für Abfragetimeout kein Wert angegeben ist, tritt für den Befehl kein Timeout ein. Der Wert für query**time_out muss eine Zahl zwischen 1 und 65534 sein.If a time_out value is not specified, the command does not time out. The query**time_out must be a number between 1 and 65534. Wenn der angegebene Wert kein numerischer Wert ist oder außerhalb dieses Bereichs liegt, generiert sqlcmd eine Fehlermeldung.If the value supplied is not numeric or does not fall into that range, sqlcmd generates an error message.

Hinweis

Der tatsächliche Timeoutwert kann einige Sekunden von dem für Timeout angegebenen Wert abweichen.The actual time out value may vary from the specified time_out value by several seconds.

-vvar = Wert [var = Wert...]-vvar = value[ var = value...]
Erstellt eine sqlcmd-Skriptvariable, die in einem sqlcmd -Skript verwendet werden kann.Creates a sqlcmdscripting variable that can be used in a sqlcmd script. Setzen Sie den Wert in Anführungszeichen, falls er Leerzeichen enthält.Enclose the value in quotation marks if the value contains spaces. Sie können mehrere Werte für var = " values " angeben.You can specify multiple var="values" values. Wenn einer der angegebenen Werte fehlerhaft ist, generiert sqlcmd eine Fehlermeldung und wird beendet.If there are errors in any of the values specified, sqlcmd generates an error message and then exits.

sqlcmd -v MyVar1=something MyVar2="some thing"

sqlcmd -v MyVar1=something -v MyVar2="some thing"

-x-x
Bewirkt, dass sqlcmd Skriptvariablen ignoriert.Causes sqlcmd to ignore scripting variables. Dieser Parameter erweist sich als nützlich, wenn ein Skript mehrere INSERT-Anweisungen enthält, die Zeichenfolgen im selben Format wie reguläre Variablen enthalten können, wie z.B. $(Variablenname).This parameter is useful when a script contains many INSERT statements that may contain strings that have the same format as regular variables, such as $(variable_name).

FormatierungsoptionenFormatting Options
-h headers-h headers
Gibt die Anzahl der Zeilen an, die zwischen den Spaltenüberschriften ausgegeben werden.Specifies the number of rows to print between the column headings. Standardmäßig werden die Überschriften für jedes Resultset der Abfrage einmal gedruckt.The default is to print headings one time for each set of query results. Durch diese Option wird die sqlcmd -Skriptvariable SQLCMDHEADERS festgelegt.This option sets the sqlcmd scripting variable SQLCMDHEADERS. Mit -1 können Sie angeben, dass keine Überschriften ausgegeben werden sollen.Use -1 to specify that headers not be printed. Ein ungültiger Wert bewirkt, dass sqlcmd eine Fehlermeldung generiert und dann beendet wird.Any value that is not valid causes sqlcmd to generate an error message and then exit.

-k [1 | 2]-k [1 | 2]
Entfernt alle Steuerzeichen aus der Ausgabe, z. B. Tabstoppzeichen und Neue-Zeile-Zeichen.Removes all control characters, such as tabs and new line characters from the output. Mit diesem Parameter bleibt die Spaltenformatierung erhalten, wenn Daten zurückgegeben werden.This parameter preserves column formatting when data is returned. Wenn 1 angegeben wird, werden die Steuerzeichen durch ein einzelnes Leerzeichen ersetzt.If 1 is specified, the control characters are replaced by a single space. Wenn 2 angegeben wird, werden aufeinanderfolgende Steuerzeichen durch ein einzelnes Leerzeichen ersetzt.If 2 is specified, consecutive control characters are replaced by a single space. -k ist der Gleiche wie -k1.-k is the same as -k1.

-s col_separator-s col_separator
Gibt das Spaltentrennzeichen an.Specifies the column-separator character. Der Standardwert ist ein Leerzeichen.The default is a blank space. Durch diese Option wird die sqlcmd -Skriptvariable SQLCMDCOLSEP festgelegt.This option sets the sqlcmd scripting variable SQLCMDCOLSEP. Um Zeichen verwenden zu können, die für das Betriebssystem eine besondere Bedeutung haben, z. B. das kaufmännische Und-Zeichen (&) oder das Semikolon (;), müssen Sie das Zeichen in Anführungszeichen (") einschließen.To use characters that have special meaning to the operating system such as the ampersand (&), or semicolon (;), enclose the character in quotation marks ("). Das Spaltentrennzeichen kann ein beliebiges 8-Bit-Zeichen sein.The column separator can be any 8-bit character.

-w column_width-w column_width
Gibt die Bildschirmbreite für die Ausgabe an.Specifies the screen width for output. Durch diese Option wird die sqlcmd -Skriptvariable SQLCMDCOLWIDTH festgelegt.This option sets the sqlcmd scripting variable SQLCMDCOLWIDTH. Die Spaltenbreite muss eine Zahl größer als 8 und kleiner als 65536 sein.The column width must be a number greater than 8 and less than 65536. Wenn die angegebene Spaltenbreite außerhalb dieses Bereichs liegt, generiert sqlcmd eine Fehlermeldung.If the specified column width does not fall into that range, sqlcmd generates an error message. Die Standardbreite beträgt 80 Zeichen.The default width is 80 characters. Wenn eine Ausgabezeile die angegebene Spaltenbreite überschreitet, wird sie in die nächste Zeile umbrochen.When an output line exceeds the specified column width, it wraps on to the next line.

-W-W
Mit dieser Option werden nachfolgende Leerzeichen aus einer Spalte entfernt.This option removes trailing spaces from a column. Verwenden Sie diese Option zusammen mit der Option -s , um Daten vorzubereiten, die in eine andere Anwendung exportiert werden sollen.Use this option together with the -s option when preparing data that is to be exported to another application. Diese Option kann nicht mit der Option -y oder -Y verwendet werden.Cannot be used with the -y or -Y options.

-y variable_Länge_Typ_Anzeigebreite-y variable_length_type_display_width
Dadurch wird die sqlcmd -Skriptvariable SQLCMDMAXVARTYPEWIDTHfestgelegt.Sets the sqlcmd scripting variable SQLCMDMAXVARTYPEWIDTH. Der Standardwert ist 256.The default is 256. Sie begrenzt die Anzahl der Zeichen, die für die großen Datentypen variabler Länge zurückgegeben werden:It limits the number of characters that are returned for the large variable length data types:

  • varchar(max)varchar(max)

  • nvarchar(max)nvarchar(max)

  • varbinary(max)varbinary(max)

  • xmlxml

  • UDT (benutzerdefinierte Datentypen)UDT (user-defined data types)

  • texttext

  • ntextntext

  • imageimage

Hinweis

UDTs können je nach Implementierung eine feste Länge aufweisen.UDTs can be of fixed length depending on the implementation. Wenn die Länge eines UDT mit fester Länge den Wert für Anzeigebreiteunterschreitet, hat dies keinen Einfluss auf den Wert des zurückgegebenen UDT.If this length of a fixed length UDT is shorter that display_width, the value of the UDT returned is not affected. Wenn die Länge den Wert für Anzeigebreitejedoch überschreitet, wird die Ausgabe abgeschnitten.However, if the length is longer than display_width, the output is truncated.

Wichtig

Verwenden Sie die Option -y 0 mit äußerster Sorgfalt, da sie je nach Größe der zurückgegebenen Daten zu ernsthaften Leistungsproblemen auf dem Server und im Netzwerk führen kann.Use the -y 0 option with extreme caution because it may cause serious performance issues on both the server and the network, depending on the size of data returned.

-Y feste_Länge_Typ_Anzeigebreite-Y fixed_length_type_display_width
Dadurch wird die sqlcmd -Skriptvariable SQLCMDMAXFIXEDTYPEWIDTHfestgelegt.Sets the sqlcmd scripting variable SQLCMDMAXFIXEDTYPEWIDTH. Der Standardwert ist 0 (unbegrenzt).The default is 0 (unlimited). Er begrenzt die Anzahl der zurückgegebenen Zeichen für die folgenden Datentypen:Limits the number of characters that are returned for the following data types:

  • char( n ) , wobei 1 <= n <= 8000char( n ), where 1<=n<=8000

  • nchar( n ) , wobei 1 <= n <= 4000nchar(n n ), where 1<=n<=4000

  • varchar( n ) , wobei 1 <= n <= 8000varchar(n n ), where 1<=n<=8000

  • nvarchar( n ) , wobei 1 <= n <= 4000nvarchar(n n ), where 1<=n<=4000

  • varbinary(n n ) , wobei 1 <= n <= 4000varbinary(n n ), where 1<=n<=4000

  • variantvariant

Optionen für die FehlerberichterstellungError Reporting Options
-b-b
Gibt an, dass sqlcmd beendet und ein DOS ERRORLEVEL-Wert zurückgegeben wird, wenn ein Fehler auftritt.Specifies that sqlcmd exits and returns a DOS ERRORLEVEL value when an error occurs. Für die DOS ERRORLEVEL-Variable wird der Wert 1 zurückgegeben, wenn der Schweregrad der SQL Server-Fehlermeldung größer als 10 ist. Andernfalls wird der Wert 0 zurückgegeben.The value that is returned to the DOS ERRORLEVEL variable is 1 when the SQL Server error message has a severity level greater than 10; otherwise, the value returned is 0. Wenn die Option -V zusätzlich zu -bfestgelegt wurde, meldet sqlcmd keinen Fehler, wenn der Schweregrad kleiner ist als die mithilfe von -Vfestgelegten Werte.If the -V option has been set in addition to -b, sqlcmd will not report an error if the severity level is lower than the values set using -V. Mit Eingabeaufforderungs-Batchdateien kann der Wert von ERRORLEVEL getestet und der Fehler entsprechend behoben werden.Command prompt batch files can test the value of ERRORLEVEL and handle the error appropriately. sqlcmd meldet keine Fehler für Schweregrad 10 (Informationsmeldungen).sqlcmd does not report errors for severity level 10 (informational messages).

Wenn das sqlcmd -Skript einen falschen Kommentar bzw. einen Syntaxfehler enthält oder eine Skriptvariable fehlt, wird der ERRORLEVEL-Wert 1 zurückgegeben.If the sqlcmd script contains an incorrect comment, syntax error, or is missing a scripting variable, ERRORLEVEL returned is 1.

-m error_level-m error_level
Steuert, welche Fehlermeldungen an stdoutgesendet werden.Controls which error messages are sent to stdout. Fehlermeldungen mit einem Schweregrad, der größer oder gleich diesem Wert ist, werden gesendet.Messages that have a severity level greater than or equal to this level are sent. Wenn dieser Wert auf -1festgelegt ist, werden alle Meldungen gesendet, einschließlich der Informationsmeldungen.When this value is set to -1, all messages including informational messages, are sent. Es sind keine Leerzeichen zwischen -m und -1zulässig.Spaces are not allowed between the -m and -1. Beispielsweise ist -m-1 gültig, -m -1 jedoch nicht.For example, -m-1 is valid, and -m -1 is not.

Mit dieser Option wird außerdem die sqlcmd -Skriptvariable SQLCMDERRORLEVEL festgelegt.This option also sets the sqlcmd scripting variable SQLCMDERRORLEVEL. Diese Variable hat den Standardwert 0.This variable has a default of 0.

-V Fehlerschweregrad-V error_severity_level
Steuert den Schweregrad, der zur Festlegung der ERRORLEVEL-Variable verwendet wird.Controls the severity level that is used to set the ERRORLEVEL variable. Für Fehlermeldungen mit einem Schweregrad, der größer oder gleich diesem Wert ist, wird ERRORLEVEL festgelegt.Error messages that have severity levels greater than or equal to this value set ERRORLEVEL. Werte kleiner 0 werden als 0 zurückgegeben.Values that are less than 0 are reported as 0. Batch- und CMD-Dateien können verwendet werden, um den Wert der ERRORLEVEL-Variable zu testen.Batch and CMD files can be used to test the value of the ERRORLEVEL variable.

Sonstige OptionenMiscellaneous Options
-a packet_size-a packet_size
Fordert ein Paket einer anderen Größe an.Requests a packet of a different size. Durch diese Option wird die sqlcmd -Skriptvariable SQLCMDPACKETSIZE festgelegt.This option sets the sqlcmd scripting variable SQLCMDPACKETSIZE. packet_size muss einen Wert zwischen 512 und 32767 haben.packet_size must be a value between 512 and 32767. Der Standardwert lautet 4096.The default = 4096. Ein höherer Wert für die Paketgröße kann das Leistungsverhalten beim Ausführen von Skripts verbessern, die zahlreiche SQL-Anweisungen zwischen GO-Befehlen aufweisen.A larger packet size can enhance performance for execution of scripts that have lots of SQL statements between GO commands. Sie können eine größere Paketgröße anfordern.You can request a larger packet size. Wenn die Anforderung abgelehnt wird, verwendet sqlcmd jedoch den Standardwert des Servers für die Paketgröße.However, if the request is denied, sqlcmd uses the server default for packet size.

-c Batchabschlusszeichen-c batch_terminator
Gibt das Batchabschlusszeichen an.Specifies the batch terminator. Standardmäßig werden Befehle abgeschlossen und an SQL Server gesendet, indem das Wort „GO“ in eine eigene Zeile eingegeben wird.By default, commands are terminated and sent to SQL Server by typing the word "GO" on a line by itself. Wenn Sie das Batchabschlusszeichen neu festlegen, dürfen Sie keine für Transact-SQL reservierten Schlüsselwörter oder Zeichen verwenden, die eine spezielle Bedeutung für das Betriebssystem haben, und zwar auch dann nicht, wenn vor dem Wort bzw. Zeichen ein umgekehrter Schrägstrich steht.When you reset the batch terminator, do not use Transact-SQL reserved keywords or characters that have special meaning to the operating system, even if they are preceded by a backslash.

-L[c]-L[c]
Listet die lokal konfigurierten Servercomputer sowie die Namen der Servercomputer auf, die Broadcastnachrichten über das Netzwerk senden.Lists the locally configured server computers, and the names of the server computers that are broadcasting on the network. Dieser Parameter kann nicht in Verbindung mit anderen Parametern verwendet werden.This parameter cannot be used in combination with other parameters. Es können maximal 3.000 Servercomputer aufgelistet werden.The maximum number of server computers that can be listed is 3000. Wenn die Serverliste aufgrund der Puffergröße abgeschnitten wurde, wird eine Warnmeldung angezeigt.If the server list is truncated because of the size of the buffer a warning message is displayed.

Hinweis

Aufgrund der Beschaffenheit des Broadcastings in Netzwerken ist es möglich, dass sqlcmd nicht von allen Servern rechtzeitig eine Antwort empfängt.Because of the nature of broadcasting on networks, sqlcmd may not receive a timely response from all servers. Daher kann die Liste der zurückgegebenen Server mit jedem Aufruf dieser Option variieren.Therefore, the list of servers returned may vary for each invocation of this option.

Wenn der optionale Parameter c angegeben ist, wird die Ausgabe ohne die Kopfzeile Server: angezeigt. Jede Serverzeile wird ohne führende Leerzeichen ausgegeben.If the optional parameter c is specified, the output appears without the Servers: header line, and each server line is listed without leading spaces. Diese Präsentation wird als saubere Ausgabe bezeichnet.This presentation is referred to as clean output. Durch die einfache Ausgabe wird die Verarbeitungsleistung von Skriptsprachen verbessert.Clean output improves the processing performance of scripting languages.

-p[1]-p[1]
Gibt Leistungsstatistiken für jedes Resultset aus.Prints performance statistics for every result set. Folgende Ausgabe ist ein Beispiel für das Format von Leistungsstatistiken:The following display is an example of the format for performance statistics:

Network packet size (bytes): n

x xact[s]:

Clock Time (ms.): total t1 avg t2 (t3 xacts per sec.)

Erläuterungen:Where:

x = Anzahl der Transaktionen, die von SQL Server verarbeitet werden.x = Number of transactions that are processed by SQL Server.

t1 = Gesamtdauer aller Transaktionen.t1 = Total time for all transactions.

t2 = Durchschnittliche Dauer einer einzelnen Transaktion.t2 = Average time for a single transaction.

t3 = Durchschnittliche Anzahl von Transaktionen pro Sekunde.t3 = Average number of transactions per second.

Alle Zeitangaben erfolgen in Millisekunden.All times are in milliseconds.

Wird der optionale Parameter 1 angegeben, wird die Statistik im durch Doppelpunkte getrennten Format ausgegeben, das problemlos in eine Kalkulationstabelle importiert oder von einem Skript verarbeitet werden kann.If the optional parameter 1 is specified, the output format of the statistics is in colon-separated format that can be imported easily into a spreadsheet or processed by a script.

Wird für den optionalen Parameter ein anderer Wert als 1angegeben, wird ein Fehler generiert und sqlcmd beendet.If the optional parameter is any value other than 1, an error is generated and sqlcmd exits.

-X[1]-X[1]
Deaktiviert Befehle, die die Systemsicherheit gefährden können, wenn sqlcmd aus einer Batchdatei ausgeführt wird.Disables commands that might compromise system security when sqlcmd is executed from a batch file. Die deaktivierten Befehle werden trotzdem erkannt; sqlcmd gibt eine Warnmeldung aus und setzt die Ausführung fort.The disabled commands are still recognized; sqlcmd issues a warning message and continues. Wenn der optionale Parameter 1 angegeben wird, generiert sqlcmd eine Fehlermeldung und wird dann beendet.If the optional parameter 1 is specified, sqlcmd generates an error message and then exits. Die folgenden Befehle sind deaktiviert, wenn die Option -X verwendet wird:The following commands are disabled when the -X option is used:

  • EDED

  • !!!! Befehlcommand

Wenn die -X -Option angegeben wird, verhindert sie die Übergabe von Umgebungsvariablen an sqlcmd.If the -X option is specified, it prevents environment variables from being passed on to sqlcmd. Sie verhindert darüber hinaus die Ausführung des Startskripts, das mithilfe der SQLCMDINI-Skriptvariablen angegeben wurde.It also prevents the startup script specified by using the SQLCMDINI scripting variable from being executed. Weitere Informationen zu sqlcmd Skriptvariablen finden Sie unter Verwenden von sqlcmd mit Skriptvariablen.For more information about sqlcmd scripting variables, see Use sqlcmd with Scripting Variables.

-?-?
Zeigt die Version von sqlcmd und eine Syntaxzusammenfassung der sqlcmd -Optionen an.Displays the version of sqlcmd and a syntax summary of sqlcmd options.

BemerkungenRemarks

Die Optionen müssen nicht in der Reihenfolge verwendet werden, in der sie im Abschnitt zur Syntax gezeigt wurden.Options do not have to be used in the order shown in the syntax section.

Wenn mehrere Ergebnisse zurückgegeben werden, gibt sqlcmd eine Leerzeile zwischen den einzelnen Resultsets in einem Batch aus.When multiple results are returned, sqlcmd prints a blank line between each result set in a batch. Außerdem wird die Meldung <x> rows affected nicht angezeigt, wenn sie für die ausgeführte Anweisung nicht gilt.In addition, the <x> rows affected message does not appear when it does not apply to the statement executed.

Wenn Sie sqlcmd interaktiv verwenden möchten, geben Sie sqlcmd an der Eingabeaufforderung und eine oder mehrere der weiter oben in diesem Artikel beschriebenen Optionen ein.To use sqlcmd interactively, type sqlcmd at the command prompt with any one or more of the options described earlier in this article. Weitere Informationen finden Sie unter Verwenden des Hilfsprogramms „sqlcmd“.For more information, see Use the sqlcmd Utility

Hinweis

Die Optionen -L, -Q, -Z und -i bewirken, dass sqlcmd nach der Ausführung beendet wird.The options -L, -Q, -Z or -i cause sqlcmd to exit after execution.

Die gesamte Länge der sqlcmd-Befehlszeile in der Befehlsumgebung (Cmd.exe) einschließlich aller Argumente und erweiterten Variablen entspricht der Länge, die im Betriebssystem für Cmd.exe bestimmt wurde.The total length of the sqlcmd command-line in the command environment (Cmd.exe), including all arguments and expanded variables, is that which is determined by the operating system for Cmd.exe.

Rangfolge der Variablen (vom niedrigsten bis zum höchsten Rang)Variable Precedence (Low to High)

  1. Umgebungsvariablen auf SystemebeneSystem-level environmental variables.

  2. Umgebungsvariablen auf BenutzerebeneUser-level environmental variables

  3. Vor der Ausführung vonsqlcmd an der Eingabeaufforderung festgelegte Befehlsshell ( SETX=Y).Command shell (SET X=Y) set at command prompt before running sqlcmd.

  4. sqlcmd-v X=Ysqlcmd-v X=Y

  5. :Setvar X Y:Setvar X Y

Hinweis

Öffnen Sie die Systemsteuerung, klicken Sie auf Systemund anschließend auf die Registerkarte Erweitert , um die Umgebungsvariablen anzuzeigen.To view the environmental variables, in Control Panel, open System, and then click the Advanced tab.

sqlcmd-Skriptvariablensqlcmd Scripting Variables

VariableVariable Damit verbundene SchalterRelated switch R/WR/W DefaultDefault
SQLCMDUSERSQLCMDUSER -U-U RR """"
SQLCMDPASSWORDSQLCMDPASSWORD -P-P -- """"
SQLCMDSERVERSQLCMDSERVER -S-S RR "DefaultLocalInstance""DefaultLocalInstance"
SQLCMDWORKSTATIONSQLCMDWORKSTATION -H-H RR "ComputerName""ComputerName"
SQLCMDDBNAMESQLCMDDBNAME -d-d RR """"
SQLCMDLOGINTIMEOUTSQLCMDLOGINTIMEOUT -l-l R/WR/W "8" (Sekunden)"8" (seconds)
SQLCMDSTATTIMEOUTSQLCMDSTATTIMEOUT -t-t R/WR/W "0" = unbegrenzt warten"0" = wait indefinitely
SQLCMDHEADERSSQLCMDHEADERS -H-h R/WR/W "0""0"
SQLCMDCOLSEPSQLCMDCOLSEP -S-s R/WR/W " "" "
SQLCMDCOLWIDTHSQLCMDCOLWIDTH -w-w R/WR/W "0""0"
SQLCMDPACKETSIZESQLCMDPACKETSIZE -A-a RR "4096""4096"
SQLCMDERRORLEVELSQLCMDERRORLEVEL -M-m R/WR/W 00
SQLCMDMAXVARTYPEWIDTHSQLCMDMAXVARTYPEWIDTH -y-y R/WR/W "256""256"
SQLCMDMAXFIXEDTYPEWIDTHSQLCMDMAXFIXEDTYPEWIDTH -y-Y R/WR/W "0" = unbegrenzt"0" = unlimited
SQLCMDEDITORSQLCMDEDITOR R/WR/W "edit.com""edit.com"
SQLCMDINISQLCMDINI RR """"
SQLCMDUSEAADSQLCMDUSEAAD -G-G R/WR/W """"

SQLCMDUSER, SQLCMDPASSWORD und SQLCMDSERVER werden festgelegt, wenn :Connect verwendet wird.SQLCMDUSER, SQLCMDPASSWORD, and SQLCMDSERVER are set when :Connect is used.

Durch R wird angezeigt, dass der Wert nur einmal während der Programminitialisierung festgelegt werden kann.R indicates the value can only be set one time during program initialization.

Durch R/W wird angezeigt, dass der Wert mithilfe des setvar -Befehls geändert werden kann und auf nachfolgende Befehle der neue Wert angewendet wird.R/W indicates that the value can be modified by using the setvar command and subsequent commands will be influenced by the new value.

sqlcmd-Befehlesqlcmd Commands

Zusätzlich zu den Transact-SQL-Anweisungen in sqlcmd sind auch die folgenden Befehle verfügbar:In addition to Transact-SQL statements within sqlcmd, the following commands are also available:

GO [Anzahl]GO [count] :List:List
[ : ] RESET[:] RESET :Error:Error
[ : ] ED[:] ED :Out:Out
[ : ] !![:] !! :Perftrace:Perftrace
[ : ] QUIT[:] QUIT :Connect:Connect
[ : ] EXIT[:] EXIT :On Error:On Error
:r:r :Help:Help
:ServerList:ServerList :XML [ON | OFF]:XML [ON | OFF]
:Setvar:Setvar :Listvar:Listvar

Beachten Sie bei der Verwendung von sqlcmd -Befehlen Folgendes:Be aware of the following when you use sqlcmd commands:

  • Mit Ausnahme von GO muss vor allen sqlcmd -Befehlen ein Doppelpunkt (:) angegeben werden.All sqlcmd commands, except GO, must be prefixed by a colon (:).

    Wichtig

    Aus Gründen der Abwärtskompatibilität mit bestehenden osql -Skripts werden einige der Befehle auch ohne Angabe des Doppelpunkts erkannt, die durch [ : ] gekennzeichnet werden.To maintain backward compatibility with existing osql scripts, some of the commands will be recognized without the colon, indicated by the [:].

  • sqlcmd -Befehle werden nur erkannt, wenn sie am Anfang einer Zeile stehen.sqlcmd commands are recognized only if they appear at the start of a line.

  • Bei keinem sqlcmd -Befehl wird die Groß- und Kleinschreibung beachtet.All sqlcmd commands are case insensitive.

  • Jeder Befehl muss in einer eigenen Zeile stehen.Each command must be on a separate line. Auf einen Befehl darf keine Transact-SQL-Anweisung oder ein anderer Befehl folgen.A command cannot be followed by a Transact-SQL statement or another command.

  • Die Befehle werden sofort ausgeführt.Commands are executed immediately. Sie werden nicht wie Transact-SQL-Anweisungen im Ausführungspuffer abgelegt.They are not put in the execution buffer as Transact-SQL statements are.

BearbeitungsbefehleEditing Commands
[ : ] ED[:] ED
Startet den Text-Editor.Starts the text editor. Mit diesem Editor kann der aktuelle Transact-SQL-Batch oder der zuletzt ausgeführte Batch bearbeitet werden.This editor can be used to edit the current Transact-SQL batch, or the last executed batch. Um den zuletzt ausgeführten Batch zu bearbeiten, muss der ED -Befehl unmittelbar nach Abschluss der Ausführung des letzten Batches eingegeben werden.To edit the last executed batch, the ED command must be typed immediately after the last batch has completed execution.

Der Text-Editor wird durch die SQLCMDEDITOR-Umgebungsvariable definiert.The text editor is defined by the SQLCMDEDITOR environment variable. Der Standardeditor ist 'Edit'.The default editor is 'Edit'. Sie können den Editor ändern, indem Sie die SQLCMDEDITOR-Umgebungsvariable festlegen.To change the editor, set the SQLCMDEDITOR environment variable. Wenn Sie beispielsweise den Microsoft-Editor als Editor festlegen möchten, müssen Sie Folgendes über die Eingabeaufforderung eingeben:For example, to set the editor to Microsoft Notepad, at the command prompt, type:

SET SQLCMDEDITOR=notepad

[ : ] RESET[:] RESET
Löscht den Anweisungscache.Clears the statement cache.

:List:List
Gibt den Inhalt des Anweisungscaches aus.Prints the content of the statement cache.

VariablenVariables
: Setvar <var>[ " Wert " ]:Setvar <var> [ "value" ]
Definiert sqlcmd -Skriptvariablen.Defines sqlcmd scripting variables. Skriptvariablen haben das folgende Format: $(VARNAME).Scripting variables have the following format: $(VARNAME).

Bei Variablennamen wird die Groß- und Kleinschreibung nicht beachtet.Variable names are case insensitive.

Skriptvariablen können folgendermaßen festgelegt werden:Scripting variables can be set in the following ways:

  • Implizit – mithilfe einer Befehlszeilenoption.Implicitly using a command-line option. Beispielsweise wird mit der Option -l die sqlcmd -Variable SQLCMDLOGINTIMEOUT festgelegt.For example, the -l option sets the SQLCMDLOGINTIMEOUT sqlcmd variable.

  • Explizit – mithilfe des :Setvar -Befehls.Explicitly by using the :Setvar command.

  • Durch die Definition einer Umgebungsvariablen vor der Ausführung von sqlcmd.By defining an environment variable before you run sqlcmd.

Hinweis

Die Option X verhindert, dass Umgebungsvariablen an sqlcmdübergeben werden.The -X option prevents environment variables from being passed on to sqlcmd.

Wenn eine Variable, die mithilfe von :Setvar definiert wurde, denselben Namen wie eine Umgebungsvariable aufweist, ist die mit :Setvar definierte Variable vorrangig.If a variable defined by using :Setvar and an environment variable have the same name, the variable defined by using :Setvar takes precedence.

Variablennamen dürfen keine Leerzeichen enthalten.Variable names must not contain blank space characters.

Variablennamen können nicht dieselbe Form wie ein Variablenausdruck, z. B. $(var), haben.Variable names cannot have the same form as a variable expression, such as $(var).

Wenn der Zeichenfolgenwert der Skriptvariablen Leerzeichen enthält, müssen Sie den Wert in Anführungszeichen einschließen.If the string value of the scripting variable contains blank spaces, enclose the value in quotation marks. Wenn für eine Skriptvariable kein Wert angegeben wird, wird die Skriptvariable ausgelassen.If a value for a scripting variable is not specified, the scripting variable is dropped.

:Listvar:Listvar
Zeigt die Liste der zurzeit festgelegten Skriptvariablen an.Displays a list of the scripting variables that are currently set.

Hinweis

Es werden nur solche Skriptvariablen angezeigt, die von sqlcmdoder mithilfe des :Setvar -Befehls festgelegt wurden.Only scripting variables that are set by sqlcmd, and those that are set using the :Setvar command will be displayed.

AusgabebefehleOutput Commands
:Error :Error
< Dateiname >| STDERR|STDOUT< filename >| STDERR|STDOUT
Leitet die gesamte Fehlerausgabe in die mit Dateinameangegebene Datei, in stderr oder in stdoutum.Redirect all error output to the file specified by file name, to stderr or to stdout. Der Befehl Error kann mehrmals in einem Skript verwendet werden.The Error command can appear multiple times in a script. Die Fehlerausgabe wird standardmäßig an stderrgesendet.By default, error output is sent to stderr.

file namefile name
Erstellt und öffnet eine Datei, in die die Ausgabe geschrieben wird.Creates and opens a file that will receive the output. Wenn die Datei bereits vorhanden ist, wird sie auf 0 Byte gekürzt.If the file already exists, it will be truncated to zero bytes. Wenn der Zugriff auf die Datei aufgrund unzureichender Berechtigungen oder anderer Ursachen nicht möglich ist, wird die Ausgabe nicht umgeleitet, sondern an das zuletzt angegebene Ziel oder an das Standardziel gesendet.If the file is not available because of permissions or other reasons, the output will not be switched and will be sent to the last specified or default destination.

STDERRSTDERR
Leitet die Fehlerausgabe in den stderr -Datenstrom.Switches error output to the stderr stream. Wenn dieser Datenstrom umgeleitet wurde, wird die Fehlerausgabe von dem Ziel empfangen, zu dem der Datenstrom umgeleitet wurde.If this has been redirected, the target to which the stream has been redirected will receive the error output.

STDOUTSTDOUT
Leitet die Fehlerausgabe in den stdout -Datenstrom.Switches error output to the stdout stream. Wenn dieser Datenstrom umgeleitet wurde, wird die Fehlerausgabe von dem Ziel empfangen, zu dem der Datenstrom umgeleitet wurde.If this has been redirected, the target to which the stream has been redirected will receive the error output.

:Out < Dateiname > | STDERR| STDOUT:Out < filename >| STDERR| STDOUT
Erstellt und leitet alle Abfrageergebnisse in der bzw. an die durch Dateinameangegebene Datei, an stderr oder an stdoutum.Creates and redirects all query results to the file specified by file name, to stderr or to stdout. Standardmäßig wird die Ausgabe an stdoutgesendet.By default, output is sent to stdout. Wenn die Datei bereits vorhanden ist, wird sie auf 0 Byte gekürzt.If the file already exists, it is truncated to zero bytes. Der Befehl Out kann mehrmals in einem Skript verwendet werden.The Out command can appear multiple times in a script.

:Perftrace < Dateiname > | STDERR| STDOUT:Perftrace < filename >| STDERR| STDOUT
Erstellt und leitet alle Informationen zur Leistungsnachverfolgung in der bzw. an die durch Dateinameangegebene Datei, an stderr oder stdoutum.Creates and redirects all performance trace information to the file specified by file name, to stderr or to stdout. Standardmäßig wird die Ausgabe zur Leistungsnachverfolgung an stdoutgesendet.By default performance trace output is sent to stdout. Wenn die Datei bereits vorhanden ist, wird sie auf 0 Byte gekürzt.If the file already exists, it is truncated to zero bytes. Der Befehl Perftrace kann mehrmals in einem Skript verwendet werden.The Perftrace command can appear multiple times in a script.

Befehle zur AusführungssteuerungExecution Control Commands
:On Error[ exit | ignore]:On Error[ exit | ignore]
Legt die Aktion fest, die ausgeführt werden soll, wenn ein Fehler während der Skript- oder Batchausführung auftritt.Sets the action to be performed when an error occurs during script or batch execution.

Wird die Option exit verwendet, wird sqlcmd mit dem entsprechenden Fehlerwert beendet.When the exit option is used, sqlcmd exits with the appropriate error value.

Wenn die Option ignore verwendet wird, ignoriert sqlcmd den Fehler und setzt die Batch- oder Skriptausführung fort.When the ignore option is used, sqlcmd ignores the error and continues executing the batch or script. Standardmäßig wird eine Fehlermeldung ausgegeben.By default, an error message is printed.

[ : ] QUIT[:] QUIT
Bewirkt, dass sqlcmd beendet wird.Causes sqlcmd to exit.

[ : ] EXIT [ ( Anweisung ) ][:] EXIT[ (statement) ]
Gibt Ihnen die Möglichkeit, das Ergebnis einer SELECT-Anweisung als Rückgabewert von sqlcmdzu verwenden.Lets you use the result of a SELECT statement as the return value from sqlcmd. Wenn numerisch, wird die erste Spalte der letzten Ergebniszeile in eine 4 Byte lange ganze Zahl (Long) konvertiert.If numeric, the first column of the last result row is converted to a 4-byte integer (long). MS-DOS übergibt das niedrige Byte an den übergeordneten Prozess oder an die Fehlerebene des Betriebssystems.MS-DOS passes the low byte to the parent process or operating system error level. Windows 200x übergibt die gesamte 4 Bytes lange ganze Zahl.Windows 200x passes the whole 4-byte integer. Die Syntax ist:The syntax is:

:EXIT(query)

Beispiel:For example:

:EXIT(SELECT @@ROWCOUNT)

Sie können den EXIT -Parameter auch als Teil einer Batchdatei einschließen.You can also include the EXIT parameter as part of a batch file. Geben Sie an der Eingabeaufforderung z. B. Folgendes ein:For example, at the command prompt, type:

sqlcmd -Q "EXIT(SELECT COUNT(*) FROM '%1')"

Das Hilfsprogramm sqlcmd sendet alle zwischen den Klammern () stehende Angaben an den Server.The sqlcmd utility sends everything between the parentheses () to the server. Wenn eine gespeicherte Systemprozedur eine Menge auswählt und einen Wert zurückgibt, wird nur die Auswahl zurückgegeben.If a system stored procedure selects a set and returns a value, only the selection is returned. Eine EXIT () -Anweisung ohne Angabe zwischen den Klammern führt alle im Batch vorhergehenden Anweisungen aus und beendet das Hilfsprogramm dann ohne Rückgabewert.The EXIT () statement with nothing between the parentheses executes everything before it in the batch and then exits without a return value.

Wird eine fehlerhafte Abfrage angegeben, wird sqlcmd beendet, ohne dass ein Wert zurückgegeben wird.When an incorrect query is specified, sqlcmd will exit without a return value.

Folgende Liste enthält eine Aufstellung von EXIT-Formaten:Here is a list of EXIT formats:

  • :EXIT:EXIT

Führt den Batch nicht aus, beendet das Hilfsprogramm sofort und gibt keinen Wert zurück.Does not execute the batch, and then quits immediately and returns no value.

  • :EXIT( ):EXIT( )

Führt den Batch aus, beendet dann das Hilfsprogramm und gibt keinen Wert zurück.Executes the batch, and then quits and returns no value.

  • :EXIT(query):EXIT(query)

Führt den Batch mit der darin enthaltenen Abfrage aus und beendet dann das Hilfsprogramm, nachdem die Ergebnisse der Abfrage zurückgegeben wurden.Executes the batch that includes the query, and then quits after it returns the results of the query.

Wird RAISERROR in einem sqlcmd -Skript verwendet und der Status 127 ausgelöst, wird sqlcmd beendet und die entsprechende Meldungs-ID an den Client zurückgegeben.If RAISERROR is used within a sqlcmd script and a state of 127 is raised, sqlcmd will quit and return the message ID back to the client. Beispiel:For example:

RAISERROR(50001, 10, 127)

Dieser Fehler bewirkt, dass das sqlcmd -Skript beendet und die Meldungs-ID 50001 an den Client zurückgegeben wird.This error will cause the sqlcmd script to end and return the message ID 50001 to the client.

Die Rückgabewerte −1 bis −99 sind für SQL Server reserviert. sqlcmd definiert die folgenden zusätzlichen Rückgabewerte:The return values -1 to -99 are reserved by SQL Server, and sqlcmd defines the following additional return values:

RückgabewerteReturn Values und BeschreibungDescription
-100-100 Vor dem Auswählen des Rückgabewerts ist ein Fehler aufgetreten.Error encountered prior to selecting return value.
-101-101 Beim Auswählen eines Rückgabewerts wurden keine Zeilen gefunden.No rows found when selecting return value.
-102-102 Beim Auswählen des Rückgabewerts ist ein Konvertierungsfehler aufgetreten.Conversion error occurred when selecting return value.

GO [Anzahl]GO [count]
GO signalisiert sowohl das Ende eines Batches als auch die Ausführung aller zwischengespeicherten Transact-SQL-Anweisungen.GO signals both the end of a batch and the execution of any cached Transact-SQL statements. Der Batch wird mehrmals als separate Batches ausgeführt.The batch is executed multiple times as separate batches. Es ist nicht möglich, eine Variable mehrmals in einem einzelnen Batch zu deklarieren.You cannot declare a variable more than once in a single batch.

Sonstige BefehleMiscellaneous Commands
:r < filename >:r < filename >
Analysiert zusätzliche Transact-SQL-Anweisungen und sqlcmd-Befehle aus der durch < filename > angegebenen Datei und schreibt das Ergebnis in den Anweisungscache.Parses additional Transact-SQL statements and sqlcmd commands from the file specified by <filename> into the statement cache.

Wenn die Datei Transact-SQL-Anweisungen enthält, die nicht von GO gefolgt sind, müssen Sie GO in der ersten Zeile nach :r eingeben.If the file contains Transact-SQL statements that are not followed by GO, you must enter GO on the line that follows :r.

Hinweis

< Dateiname > wird relativ zum Startverzeichnis gelesen, in dem sqlcmd ausgeführt wurde.< filename > is read relative to the startup directory in which sqlcmd was run.

Die Datei wird gelesen und ausgeführt, nachdem ein Batchabschlusszeichen gefunden wurde.The file will be read and executed after a batch terminator is encountered. Sie können den Befehl :r mehrmals verwenden.You can issue multiple :r commands. Die Datei kann beliebige sqlcmd -Befehle enthalten.The file may include any sqlcmd command. Dies schließt das Batchabschlusszeichen GOein.This includes the batch terminator GO.

Hinweis

Die im interaktiven Modus angezeigte Zeilenanzahl wird für jeden gefundenen :r-Befehl um 1 erhöht.The line count that is displayed in interactive mode will be increased by one for every :r command encountered. Der :r-Befehl wird in der Ausgabe des Listenbefehls angezeigt.The :r command will appear in the output of the list command.

:Serverlist:Serverlist
Listet die lokal konfigurierten Server sowie die Namen der Server auf, die Nachrichten über das Netzwerk senden.Lists the locally configured servers and the names of the servers broadcasting on the network.

:Connect server_name[ \ instance_name] [-l timeout] [-U user_name [-P password]]:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]]
Stellt eine Verbindung mit einer Instanz von SQL Server her.Connects to an instance of SQL Server . Schließt außerdem die aktuelle Verbindung.Also closes the current connection.

Timeoutoptionen:Time-out options:

00 unbegrenzte Wartezeitwait forever
n>0n>0 Wartezeit beträgt n Sekundenwait for n seconds

Die SQLCMDSERVER-Skriptvariable spiegelt die zurzeit aktive Verbindung wider.The SQLCMDSERVER scripting variable will reflect the current active connection.

Wenn Timeout nicht angegeben wird, gilt standardmäßig der Wert der SQLCMDLOGINTIMEOUT-Variablen.If timeout is not specified, the value of the SQLCMDLOGINTIMEOUT variable is the default.

Wenn nur Benutzername angegeben wird (entweder als Option oder als Umgebungsvariable), wird der Benutzer zur Eingabe eines Kennworts aufgefordert.If only user_name is specified (either as an option, or as an environment variable), the user will be prompted to enter a password. Benutzer werden nicht aufgefordert, wenn die Umgebungsvariable SQLCMDUSER oder SQLCMDPASSWORD festgelegt wurde.Users are not prompted if the SQLCMDUSER or SQLCMDPASSWORD environment variables have been set. Wenn weder Optionen noch Umgebungsvariablen angegeben werden, wird der Windows-Authentifizierungsmodus für die Anmeldung verwendet.If neither options nor environment variables are provided, Windows Authentication mode is used to sign in. Wenn z. B. mithilfe integrierter Sicherheit eine Verbindung mit der Instanz instance1 von SQL Server myserver hergestellt werden soll, geben Sie folgenden Befehl ein:For example to connect to an instance, instance1, of SQL Server, myserver, by using integrated security you would use the following command:

:connect myserver\instance1

Wenn mithilfe von Skriptvariablen eine Verbindung mit der Standardinstanz auf myserver hergestellt werden soll, würden Sie Folgendes eingeben:To connect to the default instance of myserver using scripting variables, you would use the following:

:setvar myusername test

:setvar myservername myserver

:connect $(myservername) $(myusername)

[ : ] !! < Befehl>[:] !!< command>
Führt Betriebssystembefehle aus.Executes operating system commands. Um einen Betriebssystembefehl auszuführen, geben Sie zwei Ausrufezeichen ( !! ) gefolgt von dem Betriebssystembefehl in eine neue Zeile ein.To execute an operating system command, start a line with two exclamation marks (!!) followed by the operating system command. Beispiel:For example:

:!! Dir

Hinweis

Der Befehl wird auf dem Computer ausgeführt, auf dem sqlcmd ausgeführt wird.The command is executed on the computer on which sqlcmd is running.

:XML [ON | OFF]:XML [ON | OFF]
Weitere Informationen finden Sie unter XML-Ausgabeformat und JSON-Ausgabeformat in diesem Artikel.For more information, see XML Output Format and JSON Output Format in this article

:Help:Help
Listet die sqlcmd -Befehle zusammen mit einer kurzen Beschreibung jedes Befehls auf.Lists sqlcmd commands together with a short description of each command.

sqlcmd-Dateinamensqlcmd File Names

sqlcmd -Eingabedateien können mit der Option -i oder dem Befehl :r angegeben werden.sqlcmd input files can be specified with the -i option or the :r command. Ausgabedateien können mit der Option -o oder den Befehlen :Error, :Out und :Perftrace angegeben werden.Output files can be specified with the -o option or the :Error, :Out and :Perftrace commands. Es folgen einige Richtlinien für das Verwenden dieser Dateien:The following are some guidelines for working with these files:

  • Für :Error, :Out und :Perftrace sollten verschiedene < Dateiname > -Parameter verwendet werden.:Error, :Out and :Perftrace should use separate <filename>. Wird derselbe < Dateiname > -Parameter verwendet, werden Eingaben von den Befehlen womöglich vermischt.If the same <filename> is used, inputs from the commands may be intermixed.

  • Wenn eine Eingabedatei auf einem Remoteserver einen Laufwerksdateipfad wie „:Out c:\OutputFile.txt“ enthält und von sqlcmd auf einem lokalen Computer aufgerufen wird,If an input file that is located on a remote server is called from sqlcmd on a local computer and the file contains a drive file path such as :Out c:\OutputFile.txt. Die wird Ausgabedatei auf dem lokalen Computer und nicht auf dem Remoteserver erstellt.The output file is created on the local computer and not on the remote server.

  • Gültige Dateipfade sind beispielsweise: C:\<filename>, \\<Server>\<Share$>\<filename> und "C:\Some Folder\<file name>".Valid file paths include: C:\<filename>, \\<Server>\<Share$>\<filename>, and "C:\Some Folder\<file name>". Verwenden Sie Anführungszeichen, wenn der Pfad ein Leerzeichen enthält.If there is a space in the path, use quotation marks.

  • Mit jeder neuen sqlcmd -Sitzung werden eventuell schon vorhandene gleichnamige Dateien überschrieben.Each new sqlcmd session will overwrite existing files that have the same names.

InformationsmeldungenInformational Messages

sqlcmd gibt alle vom Server gesendeten Informationsmeldungen aus.sqlcmd prints any informational message that is sent by the server. Im folgenden Beispiel wird eine Informationsmeldung ausgegeben, nachdem die Transact-SQL-Anweisungen ausgeführt wurden.In the following example, after the Transact-SQL statements are executed, an informational message is printed.

Geben Sie an der Eingabeaufforderung folgenden Befehl ein:At the command prompt, type the command:

sqlcmd

Geben Sie an der SQLCMD-Eingabeaufforderung Folgendes ein:At the sqlcmd prompt type:

USE AdventureWorks2012;

GO

Wenn Sie die EINGABETASTE drücken, wird die folgende Informationsmeldung ausgegeben: "Der Datenbankkontext wurde auf 'AdventureWorks2012' geändert."When you press ENTER, the following informational message is printed: "Changed database context to 'AdventureWorks2012'."

Ausgabeformat von Transact-SQL-AbfragenOutput Format from Transact-SQL Queries

sqlcmd gibt zuerst eine Spaltenüberschrift aus, die die in der SELECT-Liste angegebenen Spaltennamen enthält.sqlcmd first prints a column header that contains the column names specified in the select list. Die Spaltennamen werden durch das SQLCMDCOLSEP-Zeichen getrennt.The column names are separated by using the SQLCMDCOLSEP character. Standardmäßig handelt es sich hierbei um ein Leerzeichen.By default, this is a space. Wenn der Spaltenname kürzer als die Spaltenbreite ist, wird die Ausgabe bis zur nächsten Spalte mit Leerzeichen aufgefüllt.If the column name is shorter than the column width, the output is padded with spaces up to the next column.

Auf diese Zeile folgt eine Trennlinie, die durch eine Reihe von Bindestrichen dargestellt wird.This line will be followed by a separator line that is a series of dash characters. Die folgende Ausgabe zeigt ein Beispiel.The following output shows an example.

Starten Sie sqlcmd.Start sqlcmd. Geben Sie an der sqlcmd -Eingabeaufforderung folgende Abfrage ein:At the sqlcmd command prompt, type the query:

USE AdventureWorks2012;

SELECT TOP (2) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

Wenn Sie die EINGABETASTE drücken, wird das folgende Resultset zurückgegeben.When you press ENTER, the following result set is returned.

BusinessEntityID FirstName LastName

---------------- ------------ ----------

285 Syed Abbas

293 Catherine Abel

(2 row(s) affected)

Obwohl die BusinessEntityID-Spalte nur vier Zeichen breit ist, wurde sie erweitert, um den längeren Spaltennamen aufzunehmen.Although the BusinessEntityID column is only four characters wide, it has been expanded to accommodate the longer column name. Standardmäßig wird die Ausgabe mit dem 80. Zeichen beendet.By default, output is terminated at 80 characters. Dies kann geändert werden, indem Sie die Option -w verwenden oder die SQLCMDCOLWIDTH-Skriptvariable festlegen.This can be changed by using the -w option, or by setting the SQLCMDCOLWIDTH scripting variable.

XML-AusgabeformatXML Output Format

Die XML-Ausgabe, die sich aus der FOR XML-Klausel ergibt, wird unformatiert in einem fortlaufenden Datenstrom ausgegeben.XML output that is the result of a FOR XML clause is output, unformatted, in a continuous stream.

Verwenden Sie den Befehl :XML ON, wenn Sie eine Ausgabe im XML-Format erwarten.When you expect XML output, use the following command: :XML ON.

Hinweis

sqlcmd gibt Fehlermeldungen im üblichen Format zurück.sqlcmd returns error messages in the usual format. Beachten Sie, dass die Fehlermeldungen auch im XML-Textstrom im XML-Format ausgegeben werden.Notice that the error messages are also output in the XML text stream in XML format. Mit :XML ONzeigt sqlcmd keine Informationsmeldungen an.By using :XML ON, sqlcmd does not display informational messages.

Verwenden Sie den folgenden Befehl, um den XML-Modus zu deaktivieren: :XML OFF.To set the XML mode to off, use the following command: :XML OFF.

Der GO-Befehl sollte nicht verwendet werden, bevor der XML OFF-Befehl ausgegeben wurde, da XML OFF bewirkt, dass sqlcmd zur zeilenbasierten Ausgabe zurückkehrt.The GO command should not appear before the XML OFF command is issued because the XML OFF command switches sqlcmd back to row-oriented output.

Es ist nicht möglich, XML-Daten (Datenstrom) und Rowsetdaten zu mischen.XML (streamed) data and rowset data can't be mixed. Wenn der XML ON-Befehl nicht verwendet wurde, bevor eine Transact-SQL-Anweisung, die XML-Datenströme ausgibt, ausgeführt wurde, wird die Ausgabe nicht richtig dargestellt.If the XML ON command hasn't been issued before a Transact-SQL statement that outputs XML streams is executed, the output is garbled. Nachdem der XML ON-Befehl verwendet wurde, können Sie keine Transact-SQL-Anweisungen ausführen, die reguläre Rowsets ausgeben.Once the XML ON command has been issued, you can't execute Transact-SQL statements that output regular row sets.

Hinweis

Der :XML-Befehl unterstützt die SET STATISTICS XML-Anweisung nicht.The :XML command does not support the SET STATISTICS XML statement.

JSON-AusgabeformatJSON Output Format

Verwenden Sie den Befehl :XML ON, wenn Sie eine Ausgabe im JSON-Format erwarten.When you expect JSON output, use the following command: :XML ON. Andernfalls enthält die Ausgabe sowohl den Spaltennamen als auch den JSON-Text.Otherwise the output includes both the column name and the JSON text. Diese Ausgabe ist kein gültiger JSON-Code.This output is not valid JSON.

Verwenden Sie den folgenden Befehl, um den XML-Modus zu deaktivieren: :XML OFF.To set the XML mode to off, use the following command: :XML OFF.

Weitere Informationen finden Sie unter XML-Ausgabeformat in diesem Artikel.For more info, see XML Output Format in this article.

Verwenden der Azure Active Directory-AuthentifizierungUsing Azure Active Directory Authentication

Beispiele zum Verwenden der Azure Active Directory-Authentifizierung:Examples using Azure Active Directory Authentication:

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net  -G  -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAADPassword -l 30

Bewährte Methoden für die Verwendung von sqlcmdsqlcmd Best Practices

Die folgenden Methoden haben sich dazu bewährt, Sicherheit und Effizienz zu optimieren.Use the following practices to help maximize security and efficiency.

  • Verwenden Sie die integrierte Sicherheit von Windows.Use integrated security.

  • Verwenden Sie in automatisierten Umgebungen -X .Use -X in automated environments.

  • Sichern Sie Eingabe- und Ausgabedateien, indem Sie die geeigneten NTFS-Dateisystemberechtigungen verwenden.Secure input and output files by using appropriate NTFS file system permissions.

  • Führen Sie aus Leistungsgründen möglichst alle Aufgaben in einer einzigen sqlcmd -Sitzung, nicht in einer Reihe von verschiedenen Sitzungen aus.To increase performance, do as much in one sqlcmd session as you can, instead of in a series of sessions.

  • Legen Sie für Batch- bzw. Abfragetimeouts Werte fest, die höher sind als die erwartete Ausführungsdauer.Set time-out values for batch or query execution higher than you expect it will take to execute the batch or query.

Weitere InformationenSee Also

Starten des Hilfsprogramms „sqlcmd“ Start the sqlcmd Utility
Ausführen von Transact-SQL-Skriptdateien mithilfe von „sqlcmd“ Run Transact-SQL Script Files Using sqlcmd
Verwenden des Hilfsprogramms „sqlcmd“ Use the sqlcmd Utility
Verwenden von „sqlcmd“ mit Skriptvariablen Use sqlcmd with Scripting Variables
Herstellen einer Verbindung mit der Datenbank-Engine mithilfe von „sqlcmd“ Connect to the Database Engine With sqlcmd
Bearbeiten von SQLCMD-Skripts mit dem Abfrage-Editor Edit SQLCMD Scripts with Query Editor
Verwalten von Auftragsschritten Manage Job Steps
Erstellen eines CmdExec-AuftragsschrittsCreate a CmdExec Job Step

FeedbackFeedback

Hilfe_benötigt_Person_Symbol SQL Clienttools-Forumneedhelp_person_icon SQL Client Tools Forum

info_tip HilfeGet help