Bearbeiten von SQLCMD-Skripts mit dem Abfrage-Editor

Aktualisiert: 17. Juli 2006

Mit dem Microsoft SQL Server-Abfrage-Editor können Sie Abfragen als SQLCMD-Skripts schreiben und bearbeiten. SQLCMD-Skripts im Abfrage-Editor können dieselben Features wie alle Transact-SQL-Skripts verwenden. Zu diesen Features gehören folgende:

  • Farbcodierung
  • Ausführen von Skripts
  • Quellcodeverwaltung
  • Analysieren von Skripts
  • Showplan

Aktivieren von SQLCMD-Skripts im Abfrage-Editor

Wenn Sie den SQL Server-Abfrage-Editor zum Schreiben oder Bearbeiten von SQLCMD-Skripts verwenden möchten, müssen Sie den Skriptmodus aktivieren. Standardmäßig ist der Skriptmodus im Abfrage-Editor nicht aktiviert. Zum Aktivieren des Skriptmodus klicken Sie auf das Symbol SQLCMD-Modus auf der Symbolleiste, oder wählen Sie im Menü Abfrage die Option SQLCMD-Modus aus. Mithilfe dieser Methoden wird die SQLCMD-Skripterstellung für das aktuelle Fenster aktiviert.

So wechseln Sie in einem Abfrage-Editorfenster in den SQLCMD-Modus

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf den Server, und klicken Sie dann auf Neue Abfrage, um ein neues Abfrage-Editorfenster zu öffnen.

  2. Klicken Sie im Menü Abfrage auf SQLCMD-Modus.

    Der Abfrage-Editor führt sqlcmd-Anweisungen im Kontext des Abfrage-Editors aus.

  3. Wählen Sie auf der SQL-Editor-Symbolleiste in der Liste Verfügbare Datenbanken die AdventureWorks-Datenbank aus.

  4. Geben Sie im Abfrage-Editorfenster die folgenden beiden Transact-SQL-Anweisungen und die !!DIR sqlcmd-Anweisung ein:

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. Drücken Sie F5, um den gesamten Abschnitt gemischter Transact-SQL- und MS-DOS-Anweisungen auszuführen.

    Beachten Sie die beiden SQL-Ergebnisbereiche aus der ersten und dritten Anweisung.

  6. Klicken Sie im Bereich Ergebnisse auf die Registerkarte Meldungen, um die Meldungen für alle drei Anweisungen anzuzeigen:

    • (6 Zeile(n) betroffen)
    • <Verzeichnisinformationen>
    • (4 Zeile(n) betroffen)
ms174187.note(de-de,SQL.90).gifWichtig:
Wenn das Dienstprogramm sqlcmd an der Befehlszeile ausgeführt wird, ermöglicht es die vollständige Interaktion mit dem Betriebssystem. Wird der Abfrage-Editor im SQLCMD-Modus ausgeführt, müssen Sie darauf achten, dass Sie keine interaktiven Anweisungen ausführen. Der Abfrage-Editor kann auf keine Aufforderungen des Betriebssystems reagieren.

Weitere Informationen zum Ausführen von SQLCMD finden Sie unter sqlcmd (Dienstprogramm). Sie können auch das SQLCMD-Lernprogramm ausführen.

Aktivieren der SQLCMD-Skripterstellung als Standard

Zum Aktivieren der SQLCMD-Skripterstellung als Standard wählen Sie im Menü Extras die Option Optionen aus, erweitern Sie Abfrageausführung und SQL Server, klicken Sie auf die Seite Allgemein, und aktivieren Sie das Kontrollkästchen Standardmäßig neue Abfragen im SQLCMD-Modus öffnen.

Schreiben und Bearbeiten von SQLCMD-Skripts

Wenn Sie den Skriptmodus aktiviert haben, können Sie SQLCMD-Befehle und Transact-SQL-Anweisungen schreiben. Dabei gelten die folgenden Regeln:

  • SQLCMD-Befehle müssen die erste Anweisung in einer Zeile sein.
  • Pro Zeile ist nur ein SQLCMD-Befehl zulässig.
  • Vor SQLCMD-Befehlen können Kommentare oder Leerzeichen stehen.
  • SQLCMD-Befehle in Kommentarzeichen werden nicht ausgeführt.
  • Bei Kommentaren, die aus einer einzelnen Zeile bestehen, bestehen die Kommentarzeichen aus zwei Bindestrichen (--). Sie müssen am Anfang einer Zeile stehen.
  • Vor Betriebssystembefehlen müssen zwei Ausrufezeichen (!!) stehen. Der Befehl mit doppelten Ausrufezeichen sorgt dafür, dass die Anweisung nach den Ausrufezeichen mit dem Befehlsprozessor cmd.exe ausgeführt wird. Der Text nach !! wird als Parameter an cmd.exe übergeben. Die letzte Befehlszeile wird somit wie folgt ausgeführt: "%SystemRoot%\system32\cmd.exe /c <text after !!>".
  • Um eine klare Unterscheidung zwischen SQLCMD-Befehlen und Transact-SQL zu treffen, müssen alle SQLCMD-Befehle als Präfix einen Doppelpunkt (:) haben.
  • Der GO-Befehl kann möglicherweise verwendet werden, ohne ihm etwas voranzustellen oder mit vorangestelltem !!:.
  • Der Abfrage-Editor unterstützt Umgebungsvariablen und Variablen, die als Teil eines SQLCMD-Skripts definiert sind. Integrierte SQLCMD- oder osql-Variablen werden jedoch nicht unterstützt.
ms174187.Caution(de-de,SQL.90).gifVorsicht:
SQL Server Management Studio verwendet Microsoft .NET SqlClient zur Ausführung im regulären Modus und im SQLCMD-Modus. Beim Ausführen an der Befehlszeile verwendet SQLCMD den OLE DB-Anbieter. Da unterschiedliche Standardoptionen gelten können, wird beim Ausführen derselben Abfrage im SQLCMD-Modus in SQL Server Management Studio und im Dienstprogramm SQLCMD möglicherweise ein anderes Verhalten erzielt.

Unterstützte SQLCMD-Syntax

Der Abfrage-Editor unterstützt die folgenden Schlüsselwörter für SQLCMD-Skripts:

[!!:]GO[count]

!! <command>

:exit(statement)

:Quit

:r <filename>

:setvar <var> <value>

:connect server[\instance] [-l login_timeout] [-U user [-P password]]

:on error [ignore|exit]

:error <filename>|stderr|stdout

:out <filename>|stderr|stdout

ms174187.note(de-de,SQL.90).gifHinweis:
stderr und stdout senden sowohl für :error als auch für :out die Ausgabe an die Registerkarte Meldungen.

SQLCMD-Befehle, die oben nicht aufgeführt sind, werden im Abfrage-Editor nicht unterstützt. Wenn ein Skript ausgeführt wird, das nicht unterstützte SQLCMD-Schlüsselwörter enthält, sendet der Abfrage-Editor für jedes nicht unterstützte Schlüsselwort die Meldung "Ignoring command <ignored command>" an das Ziel. Das Skript wird erfolgreich ausgeführt. Die nicht unterstützten Befehle werden allerdings ignoriert.

ms174187.Caution(de-de,SQL.90).gifVorsicht:
Da Sie SQLCMD nicht über die Befehlszeile starten, bestehen beim Ausführen des Abfrage-Editors im SQLCMD-Modus einige Einschränkungen. So können Sie keine Befehlszeilenparameter wie Variablen übergeben. Außerdem müssen Sie darauf achten, keine interaktiven Anweisungen auszuführen, da der Abfrage-Editor nicht auf Eingabeaufforderungen des Betriebssystems antworten kann.

Farbcodierung in SQLCMD-Skripts

Wenn die SQLCMD-Skripterstellung aktiviert sind, werden die Skripts farblich codiert. Die Farbcodierung für Transact-SQL-Schlüsselwörter bleibt gleich. SQLCMD-Befehle werden mit einem schattierten Hintergrund angezeigt.

Beispiel

Das folgende Beispiel verwendet eine sqlcmd-Anweisung, um eine Ausgabesdatei mit Namen testoutput.txt zu erstellen und es führt zwei Transact-SQL SELECT-Anweisungen mit einem Betriebssystembefehl aus (um das aktuelle Verzeichnis auszudrucken). Die ergebene Datei enthält die Meldungsausgabe von der DIR-Anweisung gefolgt von der ergebenen Ausgabe der Transact-SQL-Anweisungen.

:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version'
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name'
GO

Siehe auch

Andere Ressourcen

sqlcmd (Dienstprogramm)
SQL Server Management Studio-Lernprogramm

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

17. Juli 2006

Neuer Inhalt:
  • Die Prozedur zum Wechseln eines Abfrage-Editorfensters in den SQLCMD-Modus wurde hinzugefügt.

05. Dezember 2005

Geänderter Inhalt:
  • Korrigieren der Syntax in Bezug auf GO.
  • Hinzufügen des Beispiels.
  • Zusammengeführter Inhalt des Themas zum SQLCMD-Modus.