Udostępnij za pomocą


Edytowanie skryptów SQLCMD za pomocą edytora zapytań

Użyj edytora zapytań w programie SQL Server Management Studio (SSMS), aby pisać i edytować zapytania jako skrypty SQLCMD. Skrypty SQLCMD umożliwiają przetwarzanie poleceń systemowych systemu Windows i instrukcji Transact-SQL w tym samym skrypcie.

Włączanie trybu SQLCMD

Aby użyć edytora zapytań do pisania lub edytowania skryptów SQLCMD, należy włączyć tryb skryptów SQLCMD. Tryb SQLCMD nie jest domyślnie włączony. Tryb skryptów można włączyć, wybierając ikonę Tryb SQLCMD na pasku narzędzi lub wybierając pozycję Tryb SQLCMD z menu Zapytanie .

Uwaga / Notatka

Po włączeniu trybu SQLCMD funkcja IntelliSense i debuger Transact-SQL są wyłączone w edytorze zapytań.

Skrypty SQLCMD w edytorze zapytań mogą używać tych samych funkcji, których używają wszystkie skrypty Transact-SQL. Do tych funkcji należą:

  • Kolorowe kodowanie
  • Wykonywanie skryptów
  • Kontrola źródła
  • Analizowanie skryptów
  • Plan pokazu

Włączanie skryptów SQLCMD w edytorze zapytań

Aby włączyć skrypty SQLCMD dla aktywnego okna Edytora zapytań, wykonaj poniższą procedurę.

Przełączanie okna edytora zapytań do trybu SQLCMD

  1. W Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer, a następnie wybierz pozycję Nowe zapytanie, aby otworzyć nowe okno Edytor zapytań .

  2. W Menu Zapytania, wybierz Tryb SQLCMD.

    Instrukcje SQLCMD są wykonywane w kontekście edytora zapytań.

  3. Na pasku narzędzi Edytor SQL, na liście Dostępne bazy danych, wybierz pozycję AdventureWorks2025.

  4. W oknie edytora zapytań wpisz następujące instrukcje Transact-SQL i instrukcję !!DIR SQLCMD:

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. Aby wykonać sekcję mieszanych instrukcji Transact-SQL i MS-DOS, naciśnij F5.

    Zwróć uwagę na dwa okienka wyników SQL z pierwszych i trzecich instrukcji.

  6. W okienku Wyniki wybierz kartę Komunikaty, aby wyświetlić komunikaty ze wszystkich trzech oświadczeń:

    • (6 row(s) affected)
    • <The directory information>
    • (4 row(s) affected)

Ważne

Po uruchomieniu polecenia sqlcmd z wiersza polecenia zezwala na pełną interakcję z systemem operacyjnym. W przypadku korzystania z edytora zapytań w trybie SQLCMD należy zachować ostrożność, aby nie wykonywać instrukcji interaktywnych. Edytor zapytań nie może odpowiedzieć na monity dotyczące systemu operacyjnego. Aby uzyskać więcej informacji na temat uruchamiania narzędzia SQLCMD z wiersza polecenia, zobacz sqlcmd utility.

Włączanie skryptów SQLCMD domyślnie

Aby domyślnie włączyć skrypty SQLCMD, w menu Tools wybierz pozycję Opcje, rozwiń węzeł Wykonywanie zapytań oraz SQL Server, wybierz stronę Ogólne, a następnie zaznacz pole Domyślnie otwórz nowe zapytania w trybie SQLCMD.

Pisanie i edytowanie skryptów SQLCMD

Po włączeniu trybu obsługi skryptów można pisać zarówno polecenia SQLCMD, jak i instrukcje Transact-SQL. Obowiązują następujące zasady:

  • Polecenia SQLCMD muszą być pierwszą instrukcją w wierszu.

  • W każdym wierszu jest dozwolone tylko jedno polecenie SQLCMD.

  • Możesz używać komentarzy i białych znaków przed poleceniami SQLCMD.

  • Polecenia SQLCMD w znakach komentarza nie są wykonywane.

  • Znaki komentarza jednowierszowego to dwa łączniki (--) i muszą być wyświetlane na początku wiersza.

  • Poprzedzaj polecenia systemu operacyjnego dwoma wykrzyknikami (!!). Polecenie z podwójnymi wykrzyknikami powoduje wykonanie instrukcji, która następuje po podwójnych wykrzyknikach, za pomocą procesora poleceń cmd.exe. Tekst po !! jest przekazywany jako parametr do cmd.exe, więc końcowy wiersz polecenia jest wykonywany jako: "%SystemRoot%\system32\cmd.exe /c <text after !!>".

  • Aby jasno rozróżnić polecenia SQLCMD i Transact-SQL, prefiksuj wszystkie polecenia SQLCMD z dwukropkiem (:).

  • Polecenie GO można używać bez prefiksu lub poprzedzone poleceniem !!:.

  • Edytor zapytań obsługuje zmienne środowiskowe i zmienne zdefiniowane jako część skryptu SQLCMD, ale nie obsługuje wbudowanych zmiennych SQLCMD ani osql . SSMS przetwarza zmienne SQLCMD jako rozróżniające wielkość liter. Na przykład PRINT '$(COMPUTERNAME)' generuje prawidłowy wynik, ale PRINT '$(ComputerName)' zwraca błąd.

Ostrzeżenie

Program SSMS używa biblioteki .NET do działania w trybie zwykłym i SQLCMD. Po uruchomieniu zapytania z wiersza polecenianarzędzie sqlcmd używa dostawcy OLE DB. Ponieważ mogą być stosowane różne opcje domyślne, podczas wykonywania tego samego zapytania w trybie SQLCMD w programie SSMS może być widoczne inne zachowanie w porównaniu z trybem SQLCMD w narzędziu sqlcmd .

Obsługiwana składnia SQLCMD

Edytor zapytań obsługuje następujące słowa kluczowe skryptu SQLCMD:

  • [!!:]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|stdout 2
  • :out <filename>|stderr|stdout 2

1 Aby uzyskać więcej informacji na temat polecenia, zobacz :connect sqlcmd.

2 Edytor zapytań wysyła dane wyjściowe do karty Komunikaty dla stderr i stdout.

Edytor zapytań nie obsługuje poleceń SQLCMD, które nie są uwzględnione na powyższej liście. Po wykonaniu skryptu zawierającego nieobsługiwane słowa kluczowe SQLCMD edytor zapytań ignoruje polecenie. Dla każdego nieobsługiwanego słowa kluczowego edytor zapytań wysyła następujący komunikat do miejsca docelowego:

Ignoring command <ignored_command>

Ostrzeżenie

Ponieważ nie uruchamiasz polecenia SQLCMD z wiersza polecenia, podczas uruchamiania edytora zapytań w trybie SQLCMD istnieją pewne ograniczenia. Nie można przekazać parametrów wiersza polecenia, takich jak zmienne. Ponadto, ponieważ edytor zapytań nie może odpowiedzieć na monity systemu operacyjnego, należy zachować ostrożność, aby nie wykonywać instrukcji interaktywnych.

Kodowanie kolorami w skryptach SQLCMD

Po włączeniu skryptów SQLCMD skrypty są kodowane kolorem. Kodowanie kolorów dla słów kluczowych Transact-SQL pozostaje takie same. Polecenia SQLCMD są wyświetlane z cieniowanym tłem.

Przykłady

W poniższym przykładzie użyto instrukcji SQLCMD do utworzenia pliku wyjściowego o nazwie testoutput.txt. Uruchamia dwie instrukcje Transact-SQL SELECT i jedno polecenie systemu operacyjnego, które wyświetla bieżący katalog. Wynikowy plik zawiera dane wyjściowe komunikatu z instrukcji DIR i wyniki z instrukcji Transact-SQL.

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