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.
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
W Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer, a następnie wybierz pozycję Nowe zapytanie, aby otworzyć nowe okno Edytor zapytań .
W Menu Zapytania, wybierz Tryb SQLCMD.
Instrukcje SQLCMD są wykonywane w kontekście edytora zapytań.
Na pasku narzędzi Edytor SQL, na liście Dostępne bazy danych, wybierz pozycję
AdventureWorks2025.W oknie edytora 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ń:
(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 docmd.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
GOmoż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, alePRINT '$(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|stdout2 -
:out <filename>|stderr|stdout2
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