Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie den Abfrage-Editor in SQL Server Management Studio (SSMS), um Abfragen als SQLCMD-Skripts zu schreiben und zu bearbeiten. Sie können SQLCMD-Skripts verwenden, um Windows-Systembefehle und Transact-SQL Anweisungen im selben Skript zu verarbeiten.
Aktivieren des SQLCMD-Modus
Um den Abfrage-Editor zum Schreiben oder Bearbeiten von SQLCMD-Skripts zu verwenden, müssen Sie den SQLCMD-Skriptmodus aktivieren. Der SQLCMD-Modus ist standardmäßig nicht aktiviert. Sie können den Skriptmodus aktivieren, indem Sie das SQLCMD-Modussymbol in der Symbolleiste auswählen oder im Menü "Abfrage" den SQLCMD-Modus auswählen.
Hinweis
Wenn Sie den SQLCMD-Modus aktivieren, werden IntelliSense und der Transact-SQL Debugger im Abfrage-Editor deaktiviert.
SQLCMD-Skripts im Abfrage-Editor können dieselben Features wie alle Transact-SQL Skripts verwenden. Zu diesen Funktionen gehören:
- Farbcodierung
- Ausführung von Skripts
- Quellcodeverwaltung
- Analysieren von Skripts
- Anzeigenplan
Aktivieren von SQLCMD-Skripts im Abfrage-Editor
Zum Aktivieren der SQLCMD-Skripterstellung für ein aktives Abfrage-Editor-Fenster verwenden Sie das folgende Verfahren.
Wechseln eines Abfrage-Editor-Fensters in den SQLCMD-Modus
Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf den Server, und wählen Sie dann "Neue Abfrage " aus, um ein neues Abfrage-Editor-Fenster zu öffnen.
Klicken Sie im Menü Abfrage auf SQLCMD-Modus.
SQLCMD-Anweisungen werden im Kontext des Abfrage-Editors ausgeführt.
Wählen Sie auf der SQL-Editor -Symbolleiste in der Liste Verfügbare Datenbanken die
AdventureWorks2025-Datenbank aus.Geben Sie im Abfrage-Editor-Fenster die folgenden Transact-SQL Anweisungen und die
!!DIRSQLCMD-Anweisung ein:SELECT DISTINCT Type FROM Sales.SpecialOffer; GO !!DIR GO SELECT ProductCategoryID, Name FROM Production.ProductCategory; GODrücken Sie F5, um den Abschnitt mit gemischten Transact-SQL- und MS-DOS-Anweisungen auszuführen.
Beachten Sie die beiden SQL-Ergebnisbereiche aus der ersten und dritten Anweisung.
Wählen Sie im Bereich Ergebnisse die Registerkarte Meldungen aus, um die Meldungen für alle drei Anweisungen anzuzeigen:
(6 row(s) affected)<The directory information>(4 row(s) affected)
Von Bedeutung
Wenn Sie sqlcmd über die Befehlszeile ausführen, ermöglicht sie die vollständige Interaktion mit dem Betriebssystem. Wenn Sie den Abfrage-Editor im SQLCMD-Modus verwenden, achten Sie darauf, keine interaktiven Anweisungen auszuführen. Der Abfrage-Editor kann nicht auf Eingabeaufforderungen des Betriebssystems reagieren. Weitere Informationen zum Ausführen von SQLCMD über die Befehlszeile finden Sie unter sqlcmd-Hilfsprogramm.
SQLCMD-Skripting standardmäßig aktivieren
Zum Aktivieren der SQLCMD-Skripterstellung als Standard wählen Sie im Menü Extras die Option Optionen aus, erweitern Sie Abfrageausführung und SQL Server, wählen Sie die Seite Allgemein aus, und aktivieren Sie das Kontrollkästchen Neue Abfragen standardmäßig im SQLCMD-Modus öffnen.
Schreiben und Bearbeiten von SQLCMD-Skripts
Nachdem Sie den Skriptmodus aktiviert haben, können Sie sowohl SQLCMD-Befehle als auch Transact-SQL-Anweisungen schreiben. Es gelten die folgenden Regeln:
SQLCMD-Befehle müssen die erste Anweisung in einer Zeile sein.
Pro Zeile ist nur ein SQLCMD-Befehl zulässig.
Sie können Kommentare und Leerzeichen vor SQLCMD-Befehlen verwenden.
SQLCMD-Befehle in Kommentarzeichen werden nicht ausgeführt.
Einzeilige Kommentarzeichen sind zwei Bindestriche (
--) und müssen am Anfang einer Zeile angezeigt werden.Befehle des Betriebssystems mit zwei Ausrufezeichen (
!!) versehen. Der Befehl mit doppelten Ausrufezeichen sorgt dafür, dass die Anweisung nach den Ausrufezeichen mit dem Befehlsprozessorcmd.exeausgeführt wird. Der Text nach!!wird als Parameter ancmd.exeübergeben, sodass die letzte Befehlszeile als"%SystemRoot%\system32\cmd.exe /c <text after !!>"ausgeführt wird.Um einen klaren Unterschied zwischen SQLCMD-Befehlen und Transact-SQL zu machen, präfixieren Sie alle SQLCMD-Befehle mit einem Doppelpunkt (
:).Der
GO-Befehl kann ohne Präfix oder mit vorangestelltem!!:verwendet werden.Der Abfrage-Editor unterstützt Umgebungsvariablen und Variablen, die Sie als Teil eines SQLCMD-Skripts definieren, aber es unterstützt keine integrierten SQLCMD- oder osql-Variablen . SSMS verarbeitet SQLCMD-Variablen unter Berücksichtigung der Groß- und Kleinschreibung. Erzeugt z. B
PRINT '$(COMPUTERNAME)'. das richtige Ergebnis, gibt jedochPRINT '$(ComputerName)'einen Fehler zurück.
Vorsicht
SSMS verwendet dieSqlClient .NET-Bibliothek für die Ausführung im regulären und SQLCMD-Modus. Wenn Sie die Abfrage über die Befehlszeile ausführen, verwendet sqlcmd den OLE DB-Anbieter. Da unterschiedliche Standardoptionen angewendet werden können, sehen Sie möglicherweise ein anderes Verhalten beim Ausführen derselben Abfrage im SQLCMD-Modus innerhalb von SSMS im Vergleich zum SQLCMD-Modus im sqlcmd-Hilfsprogramm .
Unterstützte SQLCMD-Syntax
Der Abfrage-Editor unterstützt die folgenden SQLCMD-Skriptstichwörter:
[!!:]GO[count]!! <command>:exit(statement):Quit:r <filename>:setvar <var> <value>-
:connect server[\instance] [-l login_timeout] [-U user [-P password]]1 :on error [ignore|exit]-
:error <filename>|stderr|stdout2 -
:out <filename>|stderr|stdout2
1 Weitere Informationen zum :connect Befehl finden Sie unter Befehle im sqlcmd-Hilfsprogramm.
2 Der Abfrage-Editor sendet die Ausgabe an die Registerkarte "Nachrichten " für stderr und stdout.
Der Abfrage-Editor unterstützt keine SQLCMD-Befehle, die nicht in der vorherigen Liste enthalten sind. Wenn Sie ein Skript ausführen, das nicht unterstützte SQLCMD-Schlüsselwörter enthält, ignoriert der Abfrage-Editor den Befehl. Für jedes nicht unterstützte Schlüsselwort sendet der Abfrage-Editor die folgende Nachricht an das Ziel:
Ignoring command <ignored_command>
Vorsicht
Da Sie SQLCMD nicht über die Befehlszeile starten, gibt es einige Einschränkungen beim Ausführen des Abfrage-Editors im SQLCMD-Modus. Sie können keine Befehlszeilenparameter wie Variablen übergeben. Da der Abfrage-Editor nicht auf Eingabeaufforderungen des Betriebssystems reagieren kann, müssen Sie außerdem darauf achten, keine interaktiven Anweisungen auszuführen.
Farbcodierung in SQLCMD-Skripts
Wenn Sie SQLCMD-Skripts aktivieren, werden Skripts farbcodiert. Die Farbcodierung für Transact-SQL Schlüsselwörter bleibt gleich. SQLCMD-Befehle werden mit einem schattierten Hintergrund angezeigt.
Examples
Im folgenden Beispiel wird eine SQLCMD-Anweisung verwendet, um eine Ausgabedatei mit dem Namen testoutput.txtzu erstellen. Es führt zwei Transact-SQL SELECT Anweisungen und einen Betriebssystembefehl aus, der das aktuelle Verzeichnis druckt. Die resultierende Datei enthält die Nachrichtenausgabe aus der DIR Anweisung und die Ergebnisausgabe aus den Transact-SQL-Anweisungen.
:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version';
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name';
GO