Edytowanie skryptów SQLCMD za pomocą edytora zapytań
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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
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.
W Menu Zapytania, wybierz Tryb SQLCMD.
Edytor zapytań wykonuje instrukcje SQLCMD w kontekście Edytora zapytań.
Na pasku narzędzi Edytor SQL, na liście Dostępne bazy danych, wybierz pozycję
AdventureWorks2022
.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
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.
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 docmd.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