Freigeben über


Bearbeiten von SQLCMD-Skripts im Transact-SQL-Editor

Wenn Sie Skripts im Transact-SQL (T-SQL)-Editor schreiben oder bearbeiten, können Sie eine Kombination aus T-SQL- und SQLCMD-Befehlen verwenden, wenn Sie den SQLCMD-Modus aktivieren. Weitere Informationen finden Sie unter Gewusst wie: Aktivieren des SQLCMD-Modus im Transact-SQL-Editor.

Schreiben und Bearbeiten von SQLCMD-Skripts

Wenn Sie in ein Skript SQLCMD-Befehle und T-SQL-Befehle einschließen möchten, müssen Sie sicherstellen, dass das Skript den folgenden Anforderungen entspricht:

  • Sie müssen SQLCMD-Befehle als erste Anweisung in einer Zeile platzieren.

  • Sie können immer nur einen SQLCMD-Befehl in jeder Zeile platzieren.

  • Sie können SQLCMD-Befehlen Kommentare oder Leerräume voranstellen.

  • Sie können Kommentarzeichen verwenden, um zu verhindern, dass SQLCMD-Befehle ausgeführt werden.

  • Sie müssen am Anfang einer Zeile zwei Bindestriche verwenden, um einzeilige Kommentarzeichen zu bilden.

  • Sie müssen vor jedem SQLCMD-Befehl einen Doppelpunkt platzieren, um ihn eindeutig von T-SQL-Befehlen zu unterscheiden.

  • Sie können Umgebungsvariablen und Variablen verwenden, die als Teil eines SQLCMD-Skripts definiert sind, aber Sie können keine integrierten SQLCMD-Variablen verwenden.

Verwenden der SQLCMD-Syntax

Sie können die folgenden Befehle verwenden:

  • :r Dateiname
    Analysiert zusätzliche T-SQL-Anweisungen und SQLCMD-Befehle aus der von Dateiname angegebenen Datei in den Anweisungscache. Dateiname wird als relativ zum Startverzeichnis für Visual Studio gelesen. Die Datei wird gelesen und ausgeführt, nachdem ein Batchabschlusszeichen aufgetreten ist. Sie können mehrere :r-Befehle ausgeben. Die Datei kann alle SQLCMD-Befehle einschließen, einschließlich des Batchabschlusszeichens, das unter Extras, Optionen definiert wird. Sie können :r in einem Skript vor der Bereitstellung oder für nach der Bereitstellung verwenden, um andere Skripts einzuschließen.
  • :setvar Variablenwert
    Definiert Skriptvariablen. Skriptvariablen weisen das folgende Format auf: $(Variable). Bei Namen von Variablen wird die Groß- und Kleinschreibung nicht berücksichtigt. Wenn eine mit :Setvar definierte Variable denselben Namen wie eine Umgebungsvariable aufweist, hat die durch :setvar definierte Variable Vorrang. Variablennamen dürfen keine Leerzeichen enthalten. Variablennamen dürfen nicht dieselbe Form wie ein variabler Ausdruck aufweisen, z. B. $ (var). Wenn der Zeichenfolgenwert der Skriptvariablen Leerzeichen enthält, müssen Sie die Variable in Anführungszeichen einschließen. Wird ein Wert für eine Skriptvariable nicht angegeben, wird die Skriptvariable verworfen.
  • :connect Servername[\Instanzname] [-l Timeout] [-U Benutzername [-P Kennwort]]
    Stellt eine Verbindung mit einer Instanz von Microsoft SQL Server her und schließt die aktuelle Verbindung, nachdem die von Timeout angegebene Anzahl von Sekunden verstrichen ist. Sie können "-l 0" für einen unendlichen Timeout oder eine positive Anzahl von Sekunden wie "-l 30" angeben. Wenn Sie für Benutzername und Kennwort weder Optionen noch Umgebungsvariablen angeben, wird die Windows-Authentifizierung zur Anmeldung verwendet.
  • :on error [exit | ignore]
    Legt die Aktion fest, die ausgeführt werden soll, wenn während der Skript- oder Batchausführung ein Fehler auftritt. Wenn Sie die exit-Option verwenden, wird die Ausführung mit dem entsprechenden Fehlerwert beendet. Verwenden Sie die ignore-Option, ignoriert der T-SQL-Editor den Fehler und fährt mit der Ausführung des Batches oder des Skripts fort. Es wird standardmäßig eine Fehlermeldung ausgegeben.
  • :listvar
    Zeigt eine Liste der Skriptvariablen an, die derzeit festgelegt sind. Es werden nur Skriptvariablen angezeigt, die in der aktuellen Sitzung im SQLCMD-Modus festgelegt wurden.
  • :exit
    Beendet den aktuellen Batch, ohne den Batch auszuführen oder einen Wert zurückzugeben.
  • :exit()
    Führt den Batch aus und beendet die Ausführung dann, ohne einen Wert zurückzugeben.
  • :exit(Abfrage)
    Führt den Batch aus (einschließlich der Abfrage), gibt die Ergebnisse der Abfrage zurück und beendet die Ausführung dann.

Beispiele

Um unter Verwendung der integrierten Sicherheit eine Verbindung mit der Instanz instance1 von SQL Server, myserver, herzustellen, schließen Sie den folgenden Befehl ein:

:connect myserver\instance1.

Um unter Verwendung von Skriptvariablen eine Verbindung mit der Standardinstanz von myserver herzustellen, schließen Sie den folgenden Befehl ein:

:setvar myusername test

:setvar myservername myserver

:connect $(myservername) $(myusername)

Um eine einfache Abfrage auszuführen, die in der Datei selectFromTable.sql unter C:\Files gespeichert ist, schließen Sie den folgenden Befehl ein:

:SETVAR tablevar Suppliers

:r C:\Files\selectFromTable.sql

GO

:SETVAR tablevar Customers

:r C:\Files\selectFromTable.sql

GO

Die Datei selectFromTable.sql enthält die folgende Beispielabfrage:

SELECT * FROM $(tablevar)

GO

Siehe auch

Aufgaben

Gewusst wie: Ausführen einer Abfrage
Gewusst wie: Festlegen von Optionen für die Abfrageausführung und Ergebnisse

Konzepte

Übersicht über Abfrageergebnisse