Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ę
AdventureWorks2025.W oknie Edytor zapytań wpisz następujące instrukcje Transact-SQL i instrukcję
!!DIRSQLCMD:SELECT DISTINCT Type FROM Sales.SpecialOffer; GO !!DIR GO SELECT ProductCategoryID, Name FROM Production.ProductCategory; GOAby 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 może odpowiedzieć na sygnały systemowe.
Aby uzyskać więcej informacji na temat uruchamiania narzędzia SQLCMD, zobacz narzędzie sqlcmd lub skorzystaj z samouczka 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 skryptów można pisać 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 (
:).Polecenia
GOmożna używać bez prefiksu lub poprzedzonego!!: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 programu Microsoft .NET Framework SqlClient do wykonywania w trybie regularnym i SQLCMD. Po uruchomieniu z wiersza polecenia usługa SQLCMD używa dostawcy OLE DB. Ponieważ można zastosować 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, takich jak zmienne, i ponieważ Edytor zapytań nie może odpowiedzieć na monity systemu operacyjnego, należy uważać, aby nie wykonywać instrukcji 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łady
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