Verwenden des Hilfsprogramms „sqlcmd“sqlcmd - Use the utility

Das Hilfsprogramm sqlcmd ist ein Befehlszeilen-Hilfsprogramm für die interaktive Ad-hoc-Ausführung von Transact-SQLTransact-SQL -Anweisungen und -Skripts und die Automatisierung von Transact-SQLTransact-SQL -Skripttasks.The sqlcmd utility is a command-line utility for ad hoc, interactive execution of Transact-SQLTransact-SQL statements and scripts and for automating Transact-SQLTransact-SQL scripting tasks. Damit Sie sqlcmd interaktiv verwenden oder Skriptdateien aufbauen können, die mithilfe von sqlcmdausgeführt werden, müssen Sie mit den Grundlagen von Transact-SQLTransact-SQLvertraut sein.To use sqlcmd interactively, or to build script files to be run using sqlcmd, users must understand Transact-SQLTransact-SQL. Das Hilfsprogramm sqlcmd wird in der Regel wie folgt verwendet:The sqlcmd utility is typically used in the following ways:

  • Der Benutzer gibt Transact-SQLTransact-SQL-Anweisungen ähnlich wie bei der Arbeit an der Eingabeaufforderung ein.Users enter Transact-SQLTransact-SQL statements in a manner similar to working at the command prompt. Die Ergebnisse werden an der Eingabeaufforderung angezeigt.The results are displayed at the command prompt. Um ein Eingabeaufforderungsfenster zu öffnen, geben Sie in das Windows-Suchfeld „cmd“ ein, und klicken Sie auf Eingabeaufforderung.To open a Command Prompt window, enter "cmd" in the Windows search box and click Command Prompt to open. Geben Sie an der Eingabeaufforderung sqlcmd und im Anschluss eine Liste der gewünschten Optionen ein.At the command prompt, type sqlcmd followed by a list of options that you want. Eine vollständige Liste der von sqlcmdunterstützten Optionen finden Sie unter sqlcmd (Hilfsprogramm).For a complete list of the options that are supported by sqlcmd, see sqlcmd Utility.

  • Der Benutzer sendet einen sqlcmd -Auftrag entweder durch die Angabe einer einzelnen auszuführenden Transact-SQLTransact-SQL -Anweisung, oder indem er das Hilfsprogramm an eine Textdatei verweist, in der die auszuführenden Transact-SQLTransact-SQL -Anweisungen enthalten sind.Users submit a sqlcmd job either by specifying a single Transact-SQLTransact-SQL statement to execute, or by pointing the utility to a text file that contains Transact-SQLTransact-SQL statements to execute. Die Ausgabe wird normalerweise in einer Textdatei gespeichert, sie kann jedoch auch an der Eingabeaufforderung angezeigt werden.The output is usually directed to a text file, but can also be displayed at the command prompt.

  • SQLCMD-Modus im SQL Server Management StudioSQL Server Management Studio -Abfrage-Editor.SQLCMD mode in SQL Server Management StudioSQL Server Management Studio Query Editor.

  • SQL Server Management Objects (SMO)SQL Server Management Objects (SMO)

  • CmdExec-Aufträge des SQL Server-Agents.SQL Server Agent CmdExec jobs.

Normalerweise verwendete Optionen für „sqlcmd“Typically used sqlcmd options

  • Die Serveroption (-S) ermittelt eine Instanz von MicrosoftMicrosoft SQL ServerSQL Server, mit der sqlcmd eine Verbindung herstellt.Server option (-S) identifies the instance of MicrosoftMicrosoft SQL ServerSQL Server to which sqlcmd connects.

  • Die Authentifizierungsoptionen (-E, -U, und -P) geben die Anmeldeinformationen an, die sqlcmd verwendet, um eine Verbindung mit der Instanz von SQL ServerSQL Serverherzustellen.Authentication options (-E, -U, and -P) specify the credentials that sqlcmd uses to connect to the instance of SQL ServerSQL Server. HINWEIS: Die Option -E ist die Standardeinstellung und muss nicht angegeben werden.NOTE: The option -E is the default and does not need to be specified.

  • Die Eingabeoptionen (-Q, -q und -i) ermitteln den Eingabespeicherort für sqlcmd.Input options (-Q, -q, and -i) identify the location of the input to sqlcmd.

  • Die Ausgabeoption (-o) gibt die Datei an, in die sqlcmd die Ausgabe schreiben soll.The output option (-o) specifies the file in which sqlcmd is to put its output.

Herstellen einer Verbindung mit dem Hilfsprogramm „sqlcmd“Connect to the sqlcmd utility

  • Herstellen einer Verbindung mit einer Standardinstanz mithilfe der Windows-Authentifizierung, um Transact-SQLTransact-SQL -Anweisungen interaktiv auszuführen:Connecting to a default instance by using Windows Authentication to interactively run Transact-SQLTransact-SQL statements:

    sqlcmd -S <ComputerName>  
    

    HINWEIS: Im vorherigen Beispiel wurde -E nicht angegeben, da dies die Standardeinstellung ist und von sqlcmd eine Verbindung mit der Standardinstanz mithilfe der Windows-Authentifizierung hergestellt wird.NOTE: In the previous example, -E is not specified because it is the default and sqlcmd connects to the default instance by using Windows Authentication.

  • Herstellen einer Verbindung mit einer benannten Instanz mithilfe der Windows-Authentifizierung, um Transact-SQLTransact-SQL -Anweisungen interaktiv auszuführen:Connecting to a named instance by using Windows Authentication to interactively run Transact-SQLTransact-SQL statements:

    sqlcmd -S <ComputerName>\<InstanceName>  
    

    oderor

    sqlcmd -S .\<InstanceName>  
    
  • Herstellen einer Verbindung mit einer benannten Instanz mithilfe der Windows-Authentifizierung und Angeben von Eingabe- und Ausgabedateien:Connecting to a named instance by using Windows Authentication and specifying input and output files:

    sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>  
    
  • Herstellen einer Verbindung mit der Standardinstanz auf dem lokalen Computer mithilfe der Windows-Authentifizierung, wobei eine Abfrage ausgeführt wird und sqlcmd nach Abschluss der Abfrage weiterhin ausgeführt wird:Connecting to the default instance on the local computer by using Windows Authentication, executing a query, and having sqlcmd remain running after the query has finished running:

    sqlcmd -q "SELECT * FROM AdventureWorks2012.Person.Person"  
    
  • Herstellen einer Verbindung mit der Standardinstanz auf dem lokalen Computer mithilfe der Windows-Authentifizierung, wobei eine Abfrage ausgeführt, die Ausgabe an eine Datei weitergeleitet und sqlcmd nach Abschluss der Abfrage beendet wird:Connecting to the default instance on the local computer by using Windows Authentication, executing a query, directing the output to a file, and having sqlcmd exit after the query has finished running:

    sqlcmd -Q "SELECT * FROM AdventureWorks2012.Person.Person" -o MyOutput.txt  
    
  • Herstellen einer Verbindung mit einer benannten Instanz mithilfe der SQL ServerSQL Server -Authentifizierung, um Transact-SQLTransact-SQL -Anweisungen interaktiv auszuführen, wobei von sqlcmd eine Aufforderung zur Kennworteingabe erfolgt:Connecting to a named instance using SQL ServerSQL Server Authentication to interactively run Transact-SQLTransact-SQL statements, with sqlcmd prompting for a password:

    sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>  
    

    TIPPHINT!! Eine vollständige Liste der vom Hilfsprogramm sqlcmd unterstützten Optionen erhalten Sie, indem Sie folgenden Befehl ausführen: sqlcmd -?.To see a list of the options that are supported by the sqlcmd utility run: sqlcmd -?.

Interaktives Ausführen von Transact-SQL-Anweisungen mithilfe von „sqlcmd“Run Transact-SQL statements interactively by using sqlcmd

Sie können das Hilfsprogramm sqlcmd interaktiv verwenden, um Transact-SQLTransact-SQL -Anweisungen in einem Eingabeaufforderungsfenster auszuführen.You can use the sqlcmd utility interactively to execute Transact-SQLTransact-SQL statements in a Command Prompt window. Führen Sie das Hilfsprogramm zum Angeben von Eingabedateien und zum Abfragen ohne die Optionen Transact-SQLTransact-SQL -Q ,-q ,-Z , oder-i aus, um-Anweisungen mithilfe von sqlcmd interaktiv auszuführen.To interactively execute Transact-SQLTransact-SQL statements by using sqlcmd, run the utility without using the -Q, -q, -Z, or -i options to specify any input files or queries. Beispiel:For example:

sqlcmd -S <ComputerName>\<InstanceName>

Wenn der Befehl ohne Eingabedateien oder Abfragen ausgeführt wird, wird von sqlcmd eine Verbindung mit der angegebenen Instanz von SQL ServerSQL Server hergestellt und anschließend eine neue Zeile mit einer 1> gefolgt von einem blinkenden Unterstrich angezeigt. Dies wird als sqlcmd -Aufforderung bezeichnet.When the command is executed without input files or queries, sqlcmd connects to the specified instance of SQL ServerSQL Server and then displays a new line with a 1> followed by a blinking underscore that is named the sqlcmd prompt. Die 1 bedeutet, dass es sich um die erste Zeile einer Transact-SQLTransact-SQL -Anweisung handelt, und die sqlcmd -Aufforderung ist die Stelle, an der die Transact-SQLTransact-SQL -Anweisung startet, wenn Sie sie eingeben.The 1 signifies that this is the first line of a Transact-SQLTransact-SQL statement, and the sqlcmd prompt is the point at which the Transact-SQLTransact-SQL statement will start when you type it in.

An der sqlcmd -Eingabeaufforderung können Sie sowohl Transact-SQLTransact-SQL -Anweisungen als auch sqlcmd -Befehle (z.B. GO und EXIT) eingeben.At the sqlcmd prompt, you can type both Transact-SQLTransact-SQL statements and sqlcmd commands, such as GO and EXIT. Die einzelnen Transact-SQLTransact-SQL -Anweisungen werden in einen Puffer geladen, den sogenannten Anweisungscache.Each Transact-SQLTransact-SQL statement is put in a buffer called the statement cache. Diese Anweisungen werden an SQL ServerSQL Server gesendet, nachdem Sie den Befehl GO eingegeben und die EINGABETASTE gedrückt haben.These statements are sent to SQL ServerSQL Server after you type the GO command and press ENTER. Wenn Sie sqlcmdbeenden möchten, geben Sie am Anfang einer neuen Zeile EXIT oder QUIT ein.To exit sqlcmd, type EXIT or QUIT at the start of a new line.

Den Anweisungscache können Sie löschen, indem Sie :RESETeingeben.To clear the statement cache, type :RESET. Die Eingabe von ^C bewirkt, dass sqlcmd beendet wird.Typing ^C causes sqlcmd to exit. ^C kann auch dazu verwendet werden, die Ausführung des Anweisungscaches zu beenden, nachdem der Befehl GO ausgegeben wurde.^C can also be used to stop the execution of the statement cache after a GO command has been issued.

Transact-SQLTransact-SQL Anweisungen, die in einer interaktiven Sitzung eingegeben wurden, können bearbeitet werden, indem Sie an der sqlcmd -Eingabeaufforderung :ED eingeben. statements that are entered in an interactive session can edited by entering the :ED command and the sqlcmd prompt. Der Editor wird geöffnet. Nachdem Sie die Transact-SQLTransact-SQL -Anweisung bearbeitet und den Editor geschlossen haben, wird die überarbeitete Transact-SQLTransact-SQL -Anweisung im Eingabeaufforderungsfenster angezeigt.The editor will open and, after editing the Transact-SQLTransact-SQL statement and closing the editor, the revised Transact-SQLTransact-SQL statement will appear in the command window. Geben Sie GO ein, um die überarbeitete Transact-SQLTransact-SQL -Anweisung auszuführen.Enter GO to run therevised Transact-SQLTransact-SQL statement.

Zeichenfolgen in AnführungszeichenQuoted strings

Zeichen, die in Anführungszeichen eingeschlossen sind, werden ohne weitere Vorverarbeitung verwendet. Die einzige Ausnahme besteht darin, dass Anführungszeichen durch das Eingeben von zwei aufeinander folgenden Anführungszeichen in eine Zeichenfolge eingefügt werden können.Characters that are enclosed in quotation marks are used without any additional preprocessing, except that quotations marks can be inserted into a string by entering two consecutive quotation marks. SQL ServerSQL Server In wird diese Zeichenfolgensequenz als ein Anführungszeichen behandelt. treats this character sequence as one quotation mark. (Die Übersetzung erfolgt jedoch auf dem Server.) Skriptvariablen werden nicht erweitert, wenn sie innerhalb einer Zeichenfolge auftreten.(However, the translation occurs in the server.) Scripting variables will not be expanded when they appear within a string.

Beispiel:For example:

sqlcmd

PRINT "Length: 5"" 7'";

GO

Im Folgenden finden Sie das Resultset.Here is the result set.

Length: 5" 7'

Mehrere Zeilen umfassende ZeichenfolgenStrings that span multiple lines

sqlcmd unterstützt Skripts mit Zeichenfolgen, die mehrere Zeilen umfassen.sqlcmd supports scripts that have strings that span multiple lines. Beispielsweise umfasst die folgende SELECT -Anweisung mehrere Zeilen; es handelt sich jedoch um eine einzelne Zeichenfolge, die ausgeführt wird, wenn Sie GOeingeben und anschließend die EINGABETASTE drücken.For example, the following SELECT statement spans multiple lines but is a single string executed when you press the ENTER key after typing GO.

SELECT First line

FROM Second line

WHERE Third line;

GO

Beispiel für die interaktive Verwendung von „sqlcmd“Interactive sqlcmd example

In diesem Beispiel wird veranschaulicht, was bei der interaktiven Ausführung von sqlcmd angezeigt wird.This is an example of what you see when you run sqlcmd interactively.

Wenn Sie ein Eingabeaufforderungsfenster öffnen, wird nur eine Zeile ähnlich der Folgenden angezeigt:When you open a Command Prompt window, there is one line similar to:

C:\> _

Dies bedeutet, dass der Ordner C:\ der aktuelle Ordner ist. Wenn Sie einen Dateinamen angeben, wird in Windows in diesem Ordner nach der Datei gesucht.This means the folder C:\ is the current folder, and if you specify a file name, Windows will look for the file in that folder.

Geben Sie sqlcmd ein, um eine Verbindung mit der Standardinstanz von SQL ServerSQL Server auf dem lokalen Computer herzustellen. In diesem Fall lautet der Inhalt des Eingabeaufforderungsfensters folgendermaßen:Type sqlcmd to connect to the default instance of SQL ServerSQL Server on the local computer, and the contents of the Command Prompt window will be:

C:\>sqlcmd

1> _

Dies bedeutet, dass Sie eine Verbindung mit dieser Instanz von SQL ServerSQL Server hergestellt haben und von sqlcmd ab sofort Transact-SQLTransact-SQL -Anweisungen und sqlcmd -Befehle akzeptiert werden.This means you have connected to the instance of SQL ServerSQL Server and sqlcmd is now ready to accept Transact-SQLTransact-SQL statements and sqlcmd commands. Der blinkende Unterstrich hinter der 1> ist die sqlcmd -Aufforderung. Damit wird die Stelle gekennzeichnet, an der die von Ihnen eingegebenen Anweisungen und Befehle angezeigt werden.The flashing underscore after the 1> is the sqlcmd prompt that marks the location at which the statements and commands you type will be displayed. Geben Sie nun USE AdventureWorks2012 ein, drücken Sie die EINGABETASTE, geben Sie anschließend GO ein, und drücken Sie erneut die EINGABETASTE.Now, type USE AdventureWorks2012 and press ENTER, and then type GO and press ENTER. Im Eingabeaufforderungsfensters wird der folgende Text angezeigt:The contents of the Command Prompt window will be:

sqlcmd

USE AdventureWorks2012;

GO

Im Folgenden finden Sie das Resultset.Here is the result set.

Changed database context to 'AdventureWorks2012'.

1> _

Durch das Drücken der EINGABETASTE nach dem Eingeben von USE AdventureWorks2012 wurde sqlcmd angewiesen, eine neue Zeile zu beginnen.Pressing ENTER after entering USE AdventureWorks2012 signaled sqlcmd to start a new line. Durch das Drücken der EINGABETASTE nach dem Eingeben von GO, wurde sqlcmd angewiesen, die USE AdventureWorks2012 -Anweisung an die Instanz von SQL ServerSQL Serverzu senden.Pressing ENTER, after you type GO, signaled sqlcmd to send the USE AdventureWorks2012 statement to the instance of SQL ServerSQL Server. sqlcmd Anschließend wurde von sqlcmd die Meldung zurückgegeben, dass die USE -Anweisung erfolgreich ausgeführt wurde, und es wurde eine neue 1> -Eingabeaufforderung als Hinweis zum Eingeben einer neuen Anweisung oder eines neuen Befehls angezeigt.sqlcmd then returned a message to indicate that the USE statement completed successfully and displayed a new 1> prompt as a signal to enter a new statement or command.

Im folgenden Beispiel wird gezeigt, was im Eingabeaufforderungsfenster angezeigt wird, wenn Sie eine SELECT -Anweisung, eine GO -Anweisung zum Ausführen von SELECTund anschließend EXIT eingeben, um sqlcmdzu beenden:The following example shows what the Command Prompt window contains if you type a SELECT statement, a GO to execute the SELECT, and an EXIT to exit sqlcmd:

sqlcmd

USE AdventureWorks2012;

GO

SELECT TOP (3) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

Im Folgenden finden Sie das Resultset.Here is the result set.

BusinessEntityID FirstName LastName

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

1 Syed Abbas

2 Catherine Abel

3 Kim Abercrombie

(3 rows affected)

1> EXIT

C:\>

Bei den Zeilen im Anschluss an die Zeile 3> GO handelt es sich um die Ausgabe einer SELECT -Anweisung.The lines after line 3> GO are the output of a SELECT statement. Nach dem Generieren einer Ausgabe wird die sqlcmd -Eingabeaufforderung durch sqlcmd zurückgesetzt, und es wird 1>angezeigt.After you generate output, sqlcmd resets the sqlcmd prompt and displays 1>. Nach der Eingabe von EXIT in der Zeile 1>wird im Eingabeaufforderungsfenster dieselbe Zeile wie beim ersten Öffnen der Eingabeaufforderung angezeigt.After entering EXIT at line 1>, the Command Prompt window displays the same line it did when you first opened it. Dies bedeutet, dass die Sitzung von sqlcmd beendet ist.This indicates that sqlcmd has exited its session. Sie können das Eingabeaufforderungsfenster nun schließen, indem Sie einen weiteren EXIT -Befehl eingeben.You can now close the Command Prompt window by typing another EXIT command.

Ausführen von Transact-SQL-Skriptdateien mithilfe von „sqlcmd“Running Transact-SQL script files using sqlcmd

Sie können sqlcmd zum Ausführen von Datenbankskriptdateien verwenden.You can use sqlcmd to execute database script files. Bei Skriptdateien handelt es sich um Textdateien, die eine Kombination aus Transact-SQLTransact-SQL -Anweisungen, sqlcmd -Befehlen und Skriptvariablen enthalten.Script files are text files that contain a mix of Transact-SQLTransact-SQL statements, sqlcmd commands, and scripting variables. Weitere Informationen zum Definieren von Skriptvariablen finden Sie unter Verwenden von sqlcmd mit Skriptvariablen.For more information about how to script variables, see Use sqlcmd with Scripting Variables. Insqlcmd werden Anweisungen, Befehle und Skriptvariablen in einer Skriptdatei verwendet, ähnlich wie bei der Verwendung interaktiv eingegebener Anweisungen und Befehle.sqlcmd works with the statements, commands, and scripting variables in a script file in a manner similar to how it works with statements and commands that are entered interactively. Der Hauptunterschied besteht darin, dass sqlcmd die Eingabedatei ohne Pause durchliest, anstatt darauf zu warten, dass ein Benutzer die Anweisungen, Befehle und Skriptvariablen eingibt.The main difference is that sqlcmd reads through the input file without pause instead of waiting for a user to enter the statements, commands, and scripting variables.

Es gibt verschiedene Möglichkeiten, um Datenbankskriptdateien zu erstellen:There are different ways to create database script files:

  • Sie können eine Reihe von Transact-SQLTransact-SQL -Anweisungen interaktiv in SQL Server Management StudioSQL Server Management Studioerstellen und debuggen und anschließend den Inhalt des Abfragefensters als Skriptdatei speichern.You can interactively build and debug a set of Transact-SQLTransact-SQL statements in SQL Server Management StudioSQL Server Management Studio, and then save the contents of the Query window as a script file.

  • Sie können eine Textdatei mit Transact-SQLTransact-SQL -Anweisungen mithilfe eines Text-Editors (z. B. Editor) erstellen.You can create a text file that contains Transact-SQLTransact-SQL statements by using a text editor, such as Notepad.

BeispieleExamples

A.A. Ausführen eines Skripts mithilfe von "sqlcmd"Running a script by using sqlcmd

Starten Sie Editor, und geben Sie die folgenden Transact-SQLTransact-SQL -Anweisungen ein:Start Notepad, and type the following Transact-SQLTransact-SQL statements:

USE AdventureWorks2012;

GO

SELECT TOP (3) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

Erstellen Sie einen neuen Ordner mit dem Namen MyFolder , und speichern Sie das Skript als Datei MyScript.sql im Ordner C:\MyFolder.Create a folder named MyFolder and then save the script as the file MyScript.sql in the folder C:\MyFolder. Geben Sie die folgende Eingabeaufforderung ein, um das Skript auszuführen, und speichern Sie die Ausgabe in MyOutput.txt im Ordner MyFolder:Enter the following at the command prompt to run the script and put the output in MyOutput.txt in MyFolder:

sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt

Wenn Sie den Inhalt von MyOutput.txt in Editor anzeigen, sehen Sie Folgendes:When you view the contents of MyOutput.txt in Notepad, you will see the following:

Changed database context to 'AdventureWorks2012'.

BusinessEntityID FirstName LastName

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

1 Syed Abbas

2 Catherine Abel

3 Kim Abercrombie

(3 rows affected)

B.B. Verwenden von "sqlcmd" mit einer dedizierten VerwaltungsverbindungUsing sqlcmd with a dedicated administrative connection

Im folgenden Beispiel wird mithilfe von sqlcmd eine Verbindung mit einem Server hergestellt, der Blockierungsprobleme aufweist. Dies erfolgt mithilfe einer dedizierten Administratorverbindung (Dedicated Administrator Connection, DAC).In the following example, sqlcmd is used to connect to a server that has a blocking problem by using the dedicated administrator connection (DAC).

C:\>sqlcmd -S ServerName -A

1> SELECT blocked FROM sys.dm_exec_requests WHERE blocked <> 0;

2> GO

Im Folgenden finden Sie das Resultset.Here is the result set.

spid blocked

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

62 64

(1 rows affected)

Beenden Sie den Blockierungsprozess mithilfe von sqlcmd .Use sqlcmd to end the blocking process.

1> KILL 64;

2> GO

C.C. Verwenden von "sqlcmd" zum Ausführen einer gespeicherten ProzedurUsing sqlcmd to execute a stored procedure

Im folgenden Beispiel wird veranschaulicht, wie eine gespeicherte Prozedur mithilfe von sqlcmdausgeführt wird.The following example shows how to execute a stored procedure by using sqlcmd. Erstellen Sie die folgende gespeicherte Prozedur.Create the following stored procedure.

USE AdventureWorks2012;

IF OBJECT_ID ( ' dbo.ContactEmailAddress, 'P' ) IS NOT NULL

DROP PROCEDURE dbo.ContactEmailAddress;

GO

CREATE PROCEDURE dbo.ContactEmailAddress

(

@FirstName nvarchar(50)

,@LastName nvarchar(50)

)

AS

SET NOCOUNT ON

SELECT EmailAddress

FROM Person.Person

WHERE FirstName = @FirstName

AND LastName = @LastName;

SET NOCOUNT OFF

Geben Sie an der sqlcmd -Eingabeaufforderung Folgendes ein:At the sqlcmd prompt, enter the following:

C:\sqlcmd

1> :Setvar FirstName Gustavo

1> :Setvar LastName Achong

1> EXEC dbo.ContactEmailAddress $(Gustavo),$(Achong)

2> GO

EmailAddress

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

gustavo0@adventure-works.com

D.D. Verwenden von "sqlcmd" für die DatenbankwartungUsing sqlcmd for database maintenance

Im folgenden Beispiel wird veranschaulicht, wie mithilfe von sqlcmd Datenbankwartungstasks ausgeführt werden können.The following example shows how to use sqlcmd for a database maintenance task. Erstellen Sie C:\BackupTemplate.sql mit dem folgenden Code.Create C:\BackupTemplate.sql with the following code.

USE master;

BACKUP DATABASE [$(db)] TO DISK='$(bakfile)';

Geben Sie an der sqlcmd -Eingabeaufforderung Folgendes ein:At the sqlcmd prompt, enter the following:

C:\ >sqlcmd

1> :connect <server>

Sqlcmd: Successfully connected to server <server>.

1> :setvar db msdb

1> :setvar bakfile c:\msdb.bak

1> :r c:\BackupTemplate.sql

2> GO

Changed database context to 'master'.

Processed 688 pages for database 'msdb', file 'MSDBData' on file 2.

Processed 5 pages for database 'msdb', file 'MSDBLog' on file 2.

BACKUP DATABASE successfully processed 693 pages in 0.725 seconds (7.830 MB/sec)

E.E. Verwenden von "sqlcmd" zum Ausführen von Code auf mehreren InstanzenUsing sqlcmd to execute code on multiple instances

Mit dem folgenden Code wird in einer Datei ein Skript angezeigt, mit dem eine Verbindung mit zwei Instanzen hergestellt wird.The following code in a file shows a script that connects to two instances. Beachten Sie die GO -Anweisung vom dem Herstellen einer Verbindung mit der zweiten Instanz.Notice the GO before the connection to the second instance.

:CONNECT <server>\,<instance1>

EXEC dbo.SomeProcedure

GO

:CONNECT <server>\,<instance2>

EXEC dbo.SomeProcedure

GO

E.E. Zurückgeben einer XML-AusgabeReturning XML output

Im folgenden Beispiel wird gezeigt, wie eine XML-Ausgabe unformatiert in einem fortlaufenden Datenstrom zurückgegeben wird.The following example shows how XML output is returned unformatted, in a continuous stream.

C:\>sqlcmd -d AdventureWorks2012

1> :XML ON

1> SELECT TOP 3 FirstName + ' ' + LastName + ', '

2> FROM Person.Person

3> GO

Syed Abbas, Catherine Abel, Kim Abercrombie,

F.F. Verwenden von "sqlcmd" in einer Windows-SkriptdateiUsing sqlcmd in a Windows script file

Ein sqlcmd-Befehl, z.B. sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, , kann in einer BAT-Datei zusammen mit VBScript ausgeführt werden.A sqlcmdcommand such as sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, can be executed in a .bat file together with VBScript. In diesem Fall werden keine interaktiven Optionen verwendet.In this case, do not use interactive options. sqlcmd muss auf dem Computer installiert sein, auf dem die BAT-Datei ausgeführt wird.sqlcmd must be installed on the computer that is executing the .bat file.

Erstellen Sie zunächst die folgenden vier Dateien:First, create the following four files:

  • C:\badscript.sqlC:\badscript.sql

    SELECT batch_1_this_is_an_error  
    GO  
    SELECT 'batch #2'  
    GO  
    
  • C:\goodscript.sqlC:\goodscript.sql

    SELECT 'batch #1'  
    GO  
    SELECT 'batch #2'  
    GO  
    
  • C:\returnvalue.sqlC:\returnvalue.sql

    :exit(select 100)  
    @echo off  
    C:\windowsscript.bat  
    @echo off  
    
    echo Running badscript.sql  
    sqlcmd -i badscript.sql -b -o out.log  
    if not errorlevel 1 goto next1  
    echo == An error occurred   
    
    :next1  
    
    echo Running goodscript.sql  
    sqlcmd -i goodscript.sql -b -o out.log  
    if not errorlevel 1 goto next2  
    echo == An error occurred   
    
    :next2  
    echo Running returnvalue.sql  
    sqlcmd -i returnvalue.sql -o out.log  
    echo SQLCMD returned %errorlevel% to the command shell  
    
    :exit  
    
  • C:\windowsscript.batC:\windowsscript.bat

    @echo off  
    
    echo Running badscript.sql  
    sqlcmd -i badscript.sql -b -o out.log  
    if not errorlevel 1 goto next1  
    echo == An error occurred   
    
    :next1  
    
    echo Running goodscript.sql  
    sqlcmd -i goodscript.sql -b -o out.log  
    if not errorlevel 1 goto next2  
    echo == An error occurred   
    
    :next2  
    echo Running returnvalue.sql  
    sqlcmd -i returnvalue.sql -o out.log  
    echo SQLCMD returned %errorlevel% to the command shell  
    
    :exit  
    

    Führen Sie anschließend an der Eingabeaufforderung C:\windowsscript.bataus:Then, at the command prompt, run C:\windowsscript.bat:

    C:\>windowsscript.bat

    Running badscript.sql

    == An error occurred

    Running goodscript.sql

    Running returnvalue.sql

    SQLCMD returned 100 to the command shell

G.G. Verwenden von "sqlcmd" zum Festlegen der Verschlüsselung für eine Windows Azure SQL-DatenbankUsing sqlcmd to set encryption on Windows Azure SQL Database

Ein sqlcmdkann bei einer Verbindung mit SQL-DatenbankSQL Database -Daten ausgeführt werden, um die Verschlüsselung und Zertifikatsvertrauenswürdigkeit anzugeben.A sqlcmdcan be executed on a connection to SQL-DatenbankSQL Database data on to specify encryption and certificate trust. Zwei sqlcmd-Optionen sind verfügbar:</span><span class="sxs-lookup"><span data-stu-id="9a81f-226">Two **sqlcmd**options are available:

  • Der Schalter "-N" wird vom Client verwendet, um eine verschlüsselte Verbindung anzufordern.The -N switch is used by the client to request an encrypted connection. Diese Option entspricht der ADO.NET-Option ENCRYPT = true.This option is equivalent to the ADO.net option ENCRYPT = true.

  • Der –C-Schalter wird vom Client verwendet, um ihn so zu konfigurieren, dass dem Serverzertifikat implizit vertraut wird, ohne es zu überprüfen.The –C switch is used by the client to configure it to implicitly the trust server certificate and not validate it. Diese Option entspricht der ADO.NET-Option TRUSTSERVERCERTIFICATE = true.This option is equivalent to the ADO.net option TRUSTSERVERCERTIFICATE = true.

    Der SQL-DatenbankSQL Database -Dienst unterstützt nicht alle SET -Optionen, die für eine SQL Server-Instanz verfügbar sind.The SQL-DatenbankSQL Database service does not support all the SET options available on a SQL Server instance. Die folgenden Optionen lösen einen Fehler aus, wenn die entsprechende SET -Option auf ON oder OFFfestgelegt wird:The following options throw an error when the corresponding SET option is set to ON or OFF:

  • SET ANSI_DEFAULTSSET ANSI_DEFAULTS

  • SET ANSI_NULLSSET ANSI_NULLS

  • SET REMOTE_PROC_TRANSACTIONSSET REMOTE_PROC_TRANSACTIONS

  • SET ANSI_NULL_DEFAULTSET ANSI_NULL_DEFAULT

    Die folgenden SET-Optionen lösen zwar keine Ausnahmen aus, können jedoch nicht verwendet werden.The following SET options do not throw exceptions but cannot be used. Sie sind veraltet:They are deprecated:

  • SET CONCAT_NULL_YIELDS_NULLSET CONCAT_NULL_YIELDS_NULL

  • SET ANSI_PADDINGSET ANSI_PADDING

  • SET QUERY_GOVERNOR_COST_LIMITSET QUERY_GOVERNOR_COST_LIMIT

SyntaxSyntax

Die folgenden Beispiele beziehen sich auf Fälle,in denen SQL ServerSQL Server Native Client-Anbieter-Einstellungen Folgendes umfasst: ForceProtocolEncryption = False, Trust Server Certificate = NoThe following examples refer to cases where SQL ServerSQL Server Native Client Provider settings include: ForceProtocolEncryption = False, Trust Server Certificate = No

Verbindung mit Windows-Anmeldeinformationen herstellen und Kommunikation verschlüsseln:Connect using Windows credentials and encrypt communication:

SQLCMD –E –N  

Verbindung mit Windows-Anmeldeinformationen herstellen und Serverzertifikat vertrauen:Connect using Windows credentials and trust server certificate:

SQLCMD –E –C  

Verbindung mit Windows-Anmeldeinformationen herstellen, Kommunikation verschlüsseln und Serverzertifikat vertrauen:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N –C  

Die folgenden Beispiele beziehen sich auf zwei Fälle, in denen SQL ServerSQL Server Native Client-Anbieter-Einstellungen wie folgt lauten: ForceProtocolEncryption = True, TrustServerCertificate = Yes.The following examples refer to cases where SQL ServerSQL Server Native Client Provider settings include: ForceProtocolEncryption = True, TrustServerCertificate = Yes.

Verbindung mit Windows-Anmeldeinformationen herstellen, Kommunikation verschlüsseln und Serverzertifikat vertrauen:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E  

Verbindung mit Windows-Anmeldeinformationen herstellen, Kommunikation verschlüsseln und Serverzertifikat vertrauen:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N  

Verbindung mit Windows-Anmeldeinformationen herstellen, Kommunikation verschlüsseln und Serverzertifikat vertrauen:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –T  

Verbindung mit Windows-Anmeldeinformationen herstellen, Kommunikation verschlüsseln und Serverzertifikat vertrauen:Connect using Windows credentials, encrypt communication and trust server certificate:

SQLCMD –E –N –C  

Wenn der Anbieter ForceProtocolEncryption = True angibt, wird die Verschlüsselung aktiviert, auch wenn die Verbindungszeichenfolge Encrypt=No enthält.If the provider specifies ForceProtocolEncryption = True then encryption is enabled even if Encrypt=No in the connection string.

Weitere Informationen zu „sqlcmd“More about sqlcmd

sqlcmd (Hilfsprogramm) sqlcmd Utility
Verwenden von sqlcmd mit Skriptvariablen Use sqlcmd with Scripting Variables
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