Udostępnij za pośrednictwem


Edytowanie skryptów SQLCMD za pomocą edytora zapytań

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Za pomocą Edytora zapytań aparatu bazy danych w programie SQL Server Management Studio można pisać i edytować zapytania jako skrypty SQLCMD. Skrypty SQLCMD są używane podczas przetwarzania poleceń systemu Windows i instrukcji Transact-SQL w tym samym skrypcie.

Tryb SQLCMD

Aby użyć Edytora zapytań aparatu bazy danych do pisania lub edytowania skryptów SQLCMD, należy włączyć tryb skryptów SQLCMD. Domyślnie tryb SQLCMD nie jest dozwolony w Edytorze zapytań. Tryb skryptów można włączyć, wybierając ikonę trybu SQLCMD na pasku narzędzi lub wybierając tryb SQLCMD z menu zapytania.

Notatka

Włączenie trybu SQLCMD powoduje wyłączenie funkcji IntelliSense i debuggera Transact-SQL w Edytorze zapytań silnika bazy danych.

Skrypty SQLCMD w Edytorze zapytań mogą używać tych samych funkcji, których używają wszystkie skrypty Transact-SQL. Te funkcje obejmują następujące elementy:

  • 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 aktywnie używanego okna edytora zapytań silnika bazy danych, wykonaj poniższą procedurę.

Przełącz okno edytora zapytań bazy danych na tryb SQLCMD

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

  2. W Menu Zapytania, wybierz Tryb SQLCMD.

    Edytor zapytań wykonuje instrukcje SQLCMD w kontekście Edytora zapytań.

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

  4. W oknie Edytor 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ń:

    • (zmieniono 6 wierszy)
    • <informacje o katalogu>
    • (4 wiersze zmienione)

Ważny

Po wykonaniu z wiersza polecenia narzędzie sqlcmd zezwala na pełną interakcję z systemem operacyjnym. W przypadku korzystania z Edytora zapytań w trybie SQLCMDnależy zachować ostrożność, aby nie wykonywać instrukcji interaktywnych. Edytor zapytań nie potrafi odpowiedzieć na komunikaty systemu operacyjnego.

Aby uzyskać więcej informacji na temat uruchamiania narzędzia SQLCMD, zobacz sqlcmd utilitylub zapoznaj się z samouczkiem SQLCMD.

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żesz napisać polecenia SQLCMD i instrukcje Transact-SQL. Obowiązują następujące reguły:

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

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

  • Polecenia SQLCMD mogą być poprzedzone komentarzami lub białym znakiem.

  • Polecenia SQLCMD w znakach komentarza nie są wykonywane.

  • Znaki komentarza jednowierszowego to dwa łączniki (--) i muszą pojawić się na początku wiersza.

  • Polecenia systemu operacyjnego muszą być poprzedzone 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 zostanie wykonany jako: "%SystemRoot%\system32\cmd.exe /c <text after !!>".

  • Aby jasno rozróżnić polecenia SQLCMD i Transact-SQL, wszystkie polecenia SQLCMD muszą być poprzedzone dwukropkiem (:).

  • Polecenie GO może być używane bez prefiksu lub poprzedzone !!:

  • Edytor zapytań aparatu bazy danych obsługuje zmienne środowiskowe i zmienne zdefiniowane w ramach skryptu SQLCMD, ale nie obsługuje wbudowanych zmiennych SQLCMD ani zmiennych osql. Przetwarzanie SQLCMD przez program SQL Server Management Studio jest wrażliwe na wielkość liter w przypadku zmiennych. Na przykład funkcja PRINT "$(COMPUTERNAME)" generuje prawidłowy wynik, ale funkcja PRINT "$(ComputerName)" zwraca błąd.

Ostrożność

Program SQL Server Management Studio używa biblioteki Microsoft .NET FrameworkSqlClient do wykonywania operacji w trybie regularnym i SQLCMD. Po uruchomieniu z wiersza polecenia usługa SQLCMD używa dostawcy OLE DB. Ponieważ mogą być stosowane różne opcje domyślne, można uzyskać różne zachowanie podczas wykonywania tego samego zapytania w trybie SQLCMD programu SQL Server Management Studio i w narzędziu SQLCMD.

Obsługiwana składnia SQLCMD

Edytor zapytań aparatu bazy danych 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]]
  • :on error [ignore|exit]
  • :error <filename>|stderr|stdout
  • :out <filename>|stderr|stdout

Notatka

Wyślij dane wyjściowe na kartę komunikatów zarówno dla :error, jak i :out, stderr i stdout.

Polecenia SQLCMD, które nie zostały wymienione powyżej, nie są obsługiwane w Edytorze zapytań. Gdy wykonywany jest skrypt zawierający słowa kluczowe SQLCMD, które nie są obsługiwane, edytor zapytań wysyła komunikat "Ignorowanie polecenia <ignorowane polecenie>" do adresata dla każdego nieobsługiwanego słowa kluczowego. Skrypt wykonuje się pomyślnie, ale nieobsługiwane polecenia są ignorowane.

Ostrożność

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, na przykład zmiennych, i ponieważ Edytor zapytań nie może odpowiadać na monity systemu operacyjnego, należy uważać, aby nie wykonywać poleceń interaktywnych.

Kodowanie kolorami w skryptach SQLCMD

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

Przykład

W poniższym przykładzie użyto instrukcji SQLCMD do utworzenia pliku wyjściowego o nazwie testoutput.txt, wykonuje dwie instrukcje Transact-SQL SELECT wraz z jednym poleceniem systemu operacyjnego (aby wydrukować bieżący katalog). Wynikowy plik zawiera dane wyjściowe komunikatu z instrukcji DIR i wyniki wyjściowe z instrukcji Transact-SQL.

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

Następne kroki