Narzędzie sqlcmd

Narzędzie sqlcmd pozwala wprowadzić instrukcje Transact-SQL, procedury systemowe i pliki skryptów w wierszu polecenia, w Edytorze zapytań w trybie SQLCMD, w pliku skryptów systemu Windows lub w kroku zadania systemu operacyjnego (Cmd.exe) zadania agenta programu SQL Server.Narzędzie to wykorzystuje OLE DB do wykonania partii poleceń Transact-SQL.

Ważna informacjaWażne:

SQL Server Management Studio używa programu Microsoft.NET FrameworkSqlClient dla wykonywania w trybie zwykłym i SQLCMD w Edytorze zapytań.Gdy narzędzie sqlcmd jest uruchamiane z wiersza polecenia, używa dostawcy OLE DB.Ponieważ różne domyślne opcje mogą mieć zastosowanie, mogą wystąpić różne zachowania podczas wykonywania tego samego zapytania w programie SQL Server Management Studio w trybie SQLCMD i w narzędziu sqlcmd.

Składnia

sqlcmd 
[{ { -U login_id [ -P password ] } | –E trusted connection }] 

[ -N encrypt connection ][ -C trust the server certificate ]
[ -z new password ] [ -Z new password and exit]
[ -S [protocol:]server[\instance_name][,port] ] [ -H wksta_name ] [ -d db_name ]
[ -l login time_out ] [ -A dedicated admin connection] 
[ -i input_file ] [ -o output_file ]
[ -f < codepage > | i: < codepage > [ < , o: < codepage > ] ]
[ -u unicode output] [ -r [ 0 | 1 ] msgs to stderr ] 
[ -R use client regional settings]
[ -q "cmdline query" ] [ -Q "cmdline query" and exit] 
[ -e echo input ] [ -t query time_out ] 
[ -I enable Quoted Identifiers ] 
[ -v var = "value"...] [ -x disable variable substitution ]
[ -h headers ][ -s col_separator ] [ -w column_width ] 
[ -W remove trailing spaces ]
[ -k [ 1 | 2 ] remove[replace] control characters ] 
[ -y display_width ] [-Y display_width ]
[ -b on error batch abort] [ -V severitylevel ] [ -m error_level ] 
[ -a packet_size ][ -c cmd_end ] 
[ -L [ c ] list servers[clean output] ] 
[ -p [ 1 ] print statistics[colon format]] 
[ -X [ 1 ] ] disable commands, startup script, enviroment variables [and exit] 
[ -? show syntax summary]

Opcje wiersza polecenia

  • Opcje związane z logowaniem

  • -Ulogin_id
    Jest identyfikatorem logowania użytkownika.

    Ostrzeżenie

    Zmienna środowiskowa OSQLUSER jest dostępne w celu zapewnienia zgodności z poprzednimi wersjami.Zmienna środowiskowa SQLCMDUSER ma pierwszeństwo przed zmienną środowiskową OSQLUSER.Oznacza to, że narzędzia sqlcmd i osql mogą być używane obok siebie bez zakłóceń.Oznacza to również, że istniejące skrypty narzędzia osql będą nadal działały.

    Jeśli nie określono ani opcji -U, ani opcji -P, narzędzie sqlcmd próbuje połączyć się przy użyciu trybu uwierzytelniania systemu Microsoft.Uwierzytelnianie jest oparte na koncie systemu Windows użytkownika, który uruchomił narzędzie sqlcmd.

    Jeśli opcja -U jest używana z opcją -E (opisane dalej w tym temacie), generowany jest komunikat o błędzie.Jeśli po opcji –U znajduje się więcej niż jeden argument, generowany jest komunikat o błędzie i następuje wyjście z programu.

  • -Ppassword
    Hasło określone przez użytkownika.W hasłach jest rozróżniana wielkość liter.Jeśli używana jest opcja - U bez opcji -P oraz nie ustawiono zmiennej środowiskowej SQLCMDPASSWORD, narzędzie sqlcmd monituje użytkownika o hasło.Jeśli opcja -P jest używana na końcu wiersza polecenia bez hasła, narzędzie sqlcmd używa domyślnego hasła (NULL).

    Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

    Nie należy używać pustego hasła.Należy używać silnego hasła.Aby uzyskać więcej informacji, zobacz Silne hasła.

    Monit o hasło jest wyświetlany przez wydrukowanie monitu o hasło na konsoli, w następujący sposób: Password:

    Dane wejściowe użytkownika są ukryte.Oznacza to, że nic nie jest wyświetlane i kursor pozostaje na pozycji.

    Zmienna środowiskowa SQLCMDPASSWORD pozwala ustawić hasło domyślne dla bieżącej sesji.Dlatego hasła nie muszą być wpisane na stałe w plikach wsadowych.

    W poniższym przykładzie najpierw jest ustawiana zmienna SQLCMDPASSWORD w wierszu polecenia, po czym następuje przejście do narzędzia sqlcmd.W wierszu polecenia wpisz:

    SET SQLCMDPASSWORD= p@a$$w0rd

    Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

    Hasło będzie widoczne dla każdego, kto może zobacz monitor komputera.

    W kolejnym wierszu polecenia wpisz:

    sqlcmd

    Jeśli kombinacja nazwy i hasła użytkownika jest niepoprawna, dostawca OLE DB generuje komunikat o błędzie.

    Ostrzeżenie

    Zmienna środowiskowa OSQLPASSWORD została zachowana w celu zapewnienia zgodności z poprzednimi wersjami.Zmienna środowiskowa SQLCMDPASSWORD ma pierwszeństwo przed zmienną środowiskową OSQLPASSWORD; oznacza to, że narzędzia sqlcmd i osql mogą być używane obok siebie bez zakłóceń i że stare skrypty będą nadal działały.

    Jeśli opcja -P jest używana z opcją -E, generowany jest komunikat o błędzie.

    Jeśli po opcji -P znajduje się więcej niż jeden argument, generowany jest komunikat o błędzie i następuje wyjście z programu.

  • -E trusted connection
    Używa zaufanego połączenia zamiast kombinacji nazwy użytkownika i hasła w celu zalogowania się do programu SQL Server.Domyślnie jeśli nie określono opcji -E, narzędzie sqlcmd używa zaufanego połączenia.

    Opcja -E ignoruje zmienne środowiskowe towarzyszące ewentualnie nazwie użytkownika i hasłu, takie jak SQLCMDPASSWORD.Jeśli opcja -E jest używana z opcją -U lub z opcją -P, generowany jest komunikat o błędzie.

  • -Nencrypt connection
    Ten przełącznik jest używany przez klienta do żądania połączenia szyfrowanego.Ta opcja jest równoważna opcjiENCRYPT = true z modelu ADO.net.

  • -Ctrust the server certificate
    Ten przełącznik jest używany przez klienta do konfigurowania w nim niejawnego ufania certyfikatowi serwera bez sprawdzania poprawności.Ta opcja jest równoważna opcjiTRUSTSERVERCERTIFICATE = true z modelu ADO.net.

  • -z new password
    Zmień hasło:

    sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd

  • -Z new password and exit
    Zmień hasło i zakończ:

    sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd

  • -S [protocol:]server[**\instance_name][,**port]
    Określa wystąpienie programu SQL Server, z którym ma być nawiązywane połączenie.Ustawia zmienną skryptową SQLCMDSERVER narzędzia sqlcmd.

    Określ server w celu łączenia się z domyślnym wystąpieniem programu SQL Server na tym komputerze serwera.Określ server[**\**instance_name] w celu łączenia się z nazwanym wystąpieniem programu SQL Server na tym komputerze serwera.Jeśli nie określono żadnego komputera serwera, narzędzie sqlcmd łączy się z domyślnym wystąpieniem programu SQL Server na komputerze lokalnym.Ta opcja jest wymagana podczas uruchamiania narzędzia sqlcmd ze zdalnego komputera w sieci.

    protocol może mieć wartość tcp (TCP/IP), lpc (współużytkowana pamięć) lub np (nazwane potoki).Aby uzyskać więcej informacji dotyczących protokołów, zobacz Wybieranie protokołu sieciowego.

    Jeśli nie określisz parametru server[**\**instance_name] podczas uruchamiania narzędzia sqlcmd, program SQL Server wyszukuje i używa zmiennej środowiska SQLCMDSERVER.

    Ostrzeżenie

    Zmienna środowiskowa OSQLSERVER została zachowana w celu zapewnienia zgodności z poprzednimi wersjami.Zmienna środowiskowa SQLCMDSERVER ma pierwszeństwo przed zmienną środowiskową OSQLSERVER; oznacza to, że narzędzia sqlcmd i osql mogą być używane obok siebie bez zakłóceń i że stare skrypty będą nadal działały.

  • -Hwksta_name
    Jest to nazwa stacji roboczej.Ta opcja ustawia zmienną skryptową SQLCMDWORKSTATION narzędzia sqlcmd.Nazwa stacji roboczej jest wymieniona w kolumnie hostname widoku wykazu sys.processes i może być zwracana przy użyciu procedury składowanej sp_who.Jeśli ta opcja nie jest określona, domyślnie nazwą stacji roboczej jest bieżąca nazwa komputera.Ta nazwa może być używana do określenia różnych sesji narzędzia sqlcmd.

  • -ddb_name
    Generuje instrukcję USE db_name podczas uruchamiania narzędzia sqlcmd.Ta opcja ustawia zmienną skryptową SQLCMDDBNAME narzędzia sqlcmd.Określa początkową bazę danych.Wartością domyślną jest właściwość określająca domyślną bazę danych w Twojej nazwie logowania.Jeśli baza danych nie istnieje, zostanie wygenerowany komunikat o błędzie i nastąpi zamknięcie narzędzia sqlcmd.

  • -llogintime_out
    Określa limit czasu zalogowania (w sekundach) narzędzia sqlcmd na dostawcy OLE DB w trakcie prób nawiązania połączenia z serwerem.Ta opcja ustawia zmienną skryptową SQLCMDLOGINTIMEOUT narzędzia sqlcmd.Domyślny limit czasu logowania do narzędzia sqlcmd wynosi osiem sekund.Limit czasu logowania musi być liczbą pomiędzy 0 i 65534.Jeśli dostarczona wartość nie jest liczbą lub nie należy do tego zakresu, narzędzie sqlcmd generuje komunikat o błędzie.Wartość 0 określa nieskończony limit czasu.

  • -A dedicated admin connection
    Loguje się do programu SQL Server z dedykowanego połączenia administracyjnego (DAC).Ten rodzaj połączenia jest używany do rozwiązywania problemów z serwerem.Działa tylko z komputerami serwera, które obsługują mechanizm DAC.Jeśli funkcja DAC nie jest dostępna, narzędzie sqlcmd generuje komunikat o błędzie i jest zamykane.Aby uzyskać więcej informacji dotyczących języka DAC, zobacz temat Za pomocą dedykowanego połączenia administracyjnego.

  • Input/Output Options

  • -i input_file[***,***input_file2...]
    Określa plik, który zawiera partię instrukcji SQL lub procedur składowanych.Może być określonych wiele plików, które będą czytane i przetwarzane w kolejności.Nie należy używać spacji między nazwami plików.Narzędzie sqlcmdnajpierw sprawdzi, czy wszystkie określone pliki istnieją.W razie braku co najmniej jednego pliku narzędzie sqlcmd zostanie zamknięte.Opcje -i oraz -Q/-q wykluczają się wzajemnie.

    Przykłady ścieżek:

    -i C:\<nazwa_pliku>

    -i \\<serwer>\<udział$>\<nazwa_pliku>

    -i "C:\Jakiś folder\<nazwa_pliku>"

    Ścieżki do plików, które zawierają spacje, muszą być ujęte w cudzysłowy.

    Ta opcja może być użyta więcej niż raz: -i input_file -i I input_file.

  • -ooutput_file
    Określa plik, który otrzymuje dane z narzędzia sqlcmd.

    Jeśli określono argument -u, output_file jest przechowywany w formacie Unicode.Jeśli nazwa pliku jest nieprawidłowa, zostanie wygenerowany komunikat o błędzie i nastąpi zamknięcie narzędzia sqlcmd.Narzędzie sqlcmd nie obsługuje równoczesnego zapisu z wielu swoich procesów do tego samego pliku.Plik wyjściowy będzie uszkodzony lub nieprawidłowy.Więcej informacji o formatach plików można znaleźć w opisie przełącznika -f.Plik ten zostanie utworzony, jeśli nie istnieje.Plik o tej samej nazwie z wcześniej sesji narzędzia sqlcmd zostanie zastąpiony.Plik określony tutaj nie jest plikiem strumienia stdout.Jeśli określono plik strumienia stdout, ten plik nie zostanie użyty.

    Przykłady ścieżek:

    -o C:\<nazwa_pliku>

    -o \\<serwer>\<udział$>\<nazwa_pliku>

    **-o "**C:\Jakiś folder\<nazwa_pliku>"

    Ścieżki do plików, które zawierają spacje, muszą być ujęte w cudzysłowy.

  • -f < codepage > | i: < codepage > [ <, o: < codepage > ]
    Określa strony kodowe dla danych wejściowych i wyjściowych.Numer strony kodowej jest wartością numeryczną, która określa zainstalowaną stronę kodową systemu Windows.Aby uzyskać więcej informacji, zobacz Ustawienia sortowania w konfiguracji.

    Zasady konwersji stron kodowych:

    • Jeśli nie określono żadnych stron kodowych, narzędzie sqlcmd będzie używać bieżącej strony kodowej dla plików wejściowych i wyjściowych, chyba że plik wejściowy jest plikiem Unicode, w którym to przypadku konwersja nie jest wymagana.

    • Narzędzie sqlcmd automatycznie rozpoznaje pliki wejściowe Unicode big-endian i little-endian.Jeśli określono opcję -u, dane wyjściowe będą zawsze w formacie Unicode little-endian.

    • Jeśli nie określono żadnego pliku wyjściowego, stroną kodową danych wyjściowych będzie strona kodowa konsoli.Dzięki temu dane wyjściowe będą wyświetlane poprawnie na konsoli.

    • Gdy istnieje wiele plików wejściowych, zakłada się, że używają tej samej strony kodowej.Można mieszać pliki wejściowe w formatach Unicode i innych niż Unicode.

    Wprowadź chcp w wierszu polecenia, aby sprawdzić stronę kodową narzędzia Cmd.exe.

  • -u unicode output
    Określa, że output_file jest przechowywany w formacie Unicode, niezależnie od formatu input_file.

  • -r[ 0 | 1] msgs to stderr
    Przekierowuje dane wyjściowe komunikatu o błędzie na ekran (stderr).Jeżeli nie określono parametru lub jeśli określono parametr 0, przekierowywane są tylko komunikaty o błędach mające poziom ważności 11 lub wyższy.Jeśli określono parametr 1, są przekierowywane wszystkie wyjściowe komunikaty o błędach, w tym dotyczące druku.Nie działa, jeśli użyto parametru -o.Domyślnie wiadomości są wysyłane do strumienia stdout.

  • -R use client regional settings
    Ustawia dostawcę OLE DB programu SQL Server tak, aby podczas konwertowania waluty, daty oraz daty i godziny na dane znakowe używał ustawień regionalnych klienta.Wartość domyślna to ustawienia regionalne serwera.

  • Opcje wykonywania zapytań

  • -q" cmdline query "
    Wykonuje zapytanie podczas uruchamia narzędzia sqlcmd, ale nie powoduje zamknięcia narzędzia po zakończeniu wykonywania zapytania.Można wykonywać wiele zapytań rozdzielanych średnikami.Zapytania należy ująć w cudzysłowy, jak pokazano w następującym przykładzie.

    W wierszu polecenia wpisz:

    sqlcmd -d AdventureWorks2008R2 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

    sqlcmd -d AdventureWorks2008R2 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"

    Ważna informacjaWażne:

    Nie należy używać terminatora GO w zapytaniu.

    Jeśli określono opcję -b wraz z tą opcją, narzędzie sqlcmd jest zamykane z komunikatem o błędzie.Opcję -b opisano w dalszej części tego tematu.

  • **-Q"**cmdline query " and exit
    Wykonuje zapytanie podczas uruchamia narzędzia sqlcmd, a następnie natychmiast zamyka narzędzie.Można wykonywać wiele zapytań rozdzielanych średnikami.

    Zapytania należy ująć w cudzysłowy, jak pokazano w następującym przykładzie.

    W wierszu polecenia wpisz:

    sqlcmd -d AdventureWorks2008R2 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"

    sqlcmd -d AdventureWorks2008R2 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"

    Ważna informacjaWażne:

    Nie należy używać terminatora GO w zapytaniu.

    Jeśli określono opcję -b wraz z tą opcją, narzędzie sqlcmd jest zamykane z komunikatem o błędzie.Opcję -b opisano w dalszej części tego tematu.

  • -e echo input
    Zapisuje skrypty wejściowe w standardowym urządzeniu wyjściowym (stdout).

  • -I enable Quoted Identifiers
    Ustawia opcję połączenia SET QUOTED_IDENTIFIER na ON.Domyślnie jest wybrane ustawienie OFF.Aby uzyskać więcej informacji, zobacz ZESTAW QUOTED_IDENTIFIER (Transact-SQL).

  • -tquerytime_out
    Określa liczbę sekund przed upływem limit czasu wykonywania polecenia (lub instrukcji SQL).Ta opcja ustawia zmienną skryptową SQLCMDSTATTIMEOUT narzędzia sqlcmd.Jeśli nie określono wartości time_out, nie obowiązuje limit czasu dla polecenia.Parametr querytime_out musi być liczbą pomiędzy 1 i 65535.Jeśli dostarczona wartość nie jest liczbą lub nie należy do tego zakresu, narzędzie sqlcmd generuje komunikat o błędzie.

    Ostrzeżenie

    Wartości rzeczywiste limitu czasu mogą się różnić od podanej wartości time_out o kilka sekund.

  • -vvar*=value[ var=*value...]
    Tworzy zmienną skryptową narzędzia sqlcmd, która może być używana w skrypcie narzędzia.Jeśli wartość zawiera spacje, należy ją ująć w cudzysłowy.Można określić wiele wartości var="values".Jeśli występują błędy w jakiejkolwiek określonej wartości, narzędzie sqlcmd generuje komunikat o błędzie i jest zamykane.

    sqlcmd -v MyVar1=something MyVar2="some thing"

    sqlcmd -v MyVar1=something -v MyVar2="some thing"

  • -x disable variable substitution
    Powoduje, że narzędzie sqlcmd ignoruje zmienne skryptowe.Jest to przydatne, gdy skrypt zawiera wiele instrukcji INSERT, które mogą zawierać ciągi znaków mające ten sam format jak regularne zmienne, na przykład $(variable_name).

  • Opcje formatowania

  • -hheaders
    Określa liczbę wierszy do drukowania między nagłówki kolumn.Ustawieniem domyślnym jest drukowanie nagłówków raz dla każdego zestawu wyników zapytania.Ta opcja ustawia zmienną skryptową SQLCMDHEADERS narzędzia sqlcmd.Użyj opcji -1, aby określić, że nagłówki nie mają być drukowane.Każda nieprawidłowa wartość powoduje, że narzędzie sqlcmd generuje komunikat o błędzie i jest zamykane.

  • -scol_separator
    Określa znak separatora kolumn.Domyślnie jest to spacja.Ta opcja ustawia zmienną skryptową SQLCMDCOLSEP narzędzia sqlcmd.Aby używać znaków, które mają specjalne znaczenie w systemie operacyjnym, takich jak operatora handlowego „i” (&) lub średnika (;), należy umieścić dany znak w cudzysłowach (").Separator kolumny może być dowolnym znakiem 8-bitowych.

  • -wcolumn_width
    Określa szerokość ekranu dla danych wyjściowych.Ta opcja ustawia zmienną skryptową SQLCMDCOLWIDTH narzędzia sqlcmd.Szerokość kolumny musi być liczbą większą niż 8 i mniejszą niż 65536.Jeżeli określona szerokość kolumny nie należy do tego zakresu, narzędzie sqlcmd generuje komunikat o błędzie.Domyślną szerokość jest 80 znaków.Gdy wiersz danych wyjściowych przekracza określoną szerokość kolumny, jest zawijany do następnego wiersza.

  • -W remove trailing spaces
    Ta opcja usuwa spacje końcowe z kolumny.Użyj tej opcji wraz z opcją -s podczas przygotowywania danych, które mają zostać wyeksportowane do innej aplikacji.Opcji nie można używać z opcją -y ani -Y.

  • -k[ 1 | 2 ] remove[replace] control characters
    Usuwa wszystkie znaki sterujące, takie jak tabulacje i znaki nowego wiersza, z danych wyjściowych.To zachowuje formatowanie kolumn, gdy dane są zwracane.Jeśli określono wartość 1, znaki kontrolne są zastąpione przez pojedynczą spację.Jeśli określono wartość 2, seria znaków kontrolnych jest zastępowana przez pojedynczą spację.

  • -ydisplay_width
    Ustawia zmienną skryptową SQLCMDMAXFIXEDTYPEWIDTH narzędzia sqlcmd.Ogranicza liczbę znaków, które są zwracane dla typów danych o długich zmiennych:

    • varchar(max)

    • nvarchar(max)

    • varbinary(max)

    • xml

    • UDT (user-defined data types)

    • text

    • ntext

    • image

    Ostrzeżenie

    Typy danych zdefiniowane przez użytkowników (UDT) mogą mieć stałą długość w zależności od implementacji.Jeśli stała długość typu UDT jest mniejsza niż display_width, zwracana wartość typu nie ulega żadnym zmianom.Jednakże jeśli długość jest większa niż display_width, dane wyjściowe są obcinane.

    Jeżeli parametr display_width ma wartość 0, dane wyjściowe są obcinane po osiągnięciu 1 MB.Można użyć polecenia :XML ON, aby zapobiec obcinaniu danych wyjściowych.Polecenie :XML ON opisano w dalszej części tego tematu.

    Ważna informacjaWażne:

    Opcji -y 0 należy używać z najwyższą ostrożnością, ponieważ może spowodować poważne problemy z wydajnością serwera i sieci, zależnie od rozmiaru zwracanych danych.

  • -Ydisplay_width
    Ustawia zmienną skryptową SQLCMDMAXVARTYPEWIDTH narzędzia sqlcmd.Wartość domyślna to 256.Ogranicza liczbę znaków, które są zwracane dla następujących typów danych:

    • char

    • nchar

    • varchar(n), gdzie 1<n<8000

    • nvarchar(n), gdzie 1<n<4000

    • sql_variant

  • Opcje sprawozdawczości o błędach

  • -b on error batch abort
    Określa, że narzędzie sqlcmd jest zamykane i zwraca wartość DOS ERRORLEVEL, gdy wystąpi błąd.Wartość zwracana do zmiennej DOS ERRORLEVEL wynosi 1, jeśli komunikat o błędzie z programu SQL Server ma poziom ważności wyższy niż 10; w przeciwnym wypadku jest zwracana wartość 0.Jeśli ustawiono opcję -V oprócz opcji -b, narzędzie sqlcmd nie zgłosi błędu, jeśli poziom ważności jest niższy niż wartości ustawione za pomocą opcji -V.Pliki wsadowe wiersza polecenia mogą testować wartość zmiennej ERRORLEVEL i postępować z błędem.Narzędzie sqlcmd nie raportuje błędów o poziomie ważności 10 (komunikaty informacyjne).

    Jeśli skrypt narzędzia sqlcmd zawiera niepoprawny komentarz lub błąd składniowy albo brakuje w nim zmiennej skryptowej, zwracana wartość zmiennej ERRORLEVEL wynosi 1.

  • -V severitylevel
    Steruje poziomem ważności, który jest używany do ustawiania zmiennej ERRORLEVEL.Komunikaty o błędach, które mają poziomy ważności mniejsze niż lub równe tej wartości, ustawiają zmienną ERRORLEVEL.Wartości mniejsze niż 0 są zgłaszane jako 0.Do testowania wartości zmiennej ERRORLEVEL można używać plików wsadowych i CMD.

  • -merror_level
    Decyduje, które komunikaty o błędach są wysyłane do strumienia stdout.Są wysyłane komunikaty, które mają poziomy ważności mniejsze niż lub równe tej wartości.Gdy ta wartość jest ustawiona na -1, wszystkie wiadomości, w tym komunikaty informacyjne, są wysyłane.Spacje nie są dozwolone między atrybutami -m i -1.Na przykład zapis -m-1 jest prawidłowy, a zapis -m-1 nie jest.

    Ta opcja ustawia również zmienną skryptową SQLCMDERRORLEVEL narzędzia sqlcmd.Ta zmienna ma wartość domyślną 0.

  • Różne opcje

  • -apacket_size
    Żąda pakietu o innym rozmiarze.Ta opcja ustawia zmienną skryptową SQLCMDPACKETSIZE narzędzia sqlcmd.Wartość packet_size musi należeć do przedziału od 512 do 32767.Wartość domyślna to 4096.Większy rozmiar pakietu może zwiększyć wydajność wykonywania skryptów, które mają wiele instrukcji SQL między poleceniami GO.Można zażądać pakietu o większym rozmiarze.Jednakże jeśli żądanie zostanie odrzucone, narzędzie sqlcmd używa pakietów o rozmiarze domyślnym dla serwera.

  • -ccmd_end
    Określa terminator partii.Domyślnie polecenia są kończone i wysyłane do programu SQL Server przez wpisanie samego słowa „GO” w wierszu.Przy resetowaniu terminatora partii nie należy używać zarezerwowanych słów kluczowych języka Transact-SQL ani znaków, które mają specjalne znaczenie w systemie operacyjnym, nawet jeśli są poprzedzone przez odwróconą kreskę ułamkową.

  • -L [ c ] list servers[clean output]
    Wyświetla listę lokalnie skonfigurowanych komputerów serwerów oraz nazwy komputerów serwerów, które transmitują dane w sieci.Tego parametru nie można używać w połączeniu z innymi parametrami.Maksymalna liczba komputerów serwerów, które mogą zostać wyświetlone, to 3000.Jeżeli lista serwerów jest obcinana ze względu na rozmiar buforu, jest wyświetlany komunikat ostrzegawczy.

    Ostrzeżenie

    Ze względu na charakter transmisji w sieci narzędzie sqlcmd może nie otrzymać we właściwym czasie odpowiedzi od wszystkich serwerów.Dlatego zwracana lista serwerów może się różnić dla każdego wywołania tej opcji.

    Jeżeli określono parametr opcjonalny c, dane wyjściowe pojawiają się bez serwerów: nagłówek wiersza i wiersz każdego serwera są wyświetlone bez poprzedzających spacji.To jest określone jako czyste dane wyjściowe.Czyste dane wyjściowe zwiększają wydajność przetwarzania języków skryptowych.

  • -p[ 1 ] print statistics[colon format]
    Drukuje statystyki wydajności dla każdego zestawu wyników.Oto przykład formatu dla statystyk wydajności:

    Network packet size (bytes): n

    x xact[s]:

    Clock Time (ms.): total t1 avg t2 (t3 xacts per sec.)

    Gdzie:

    x = Liczba transakcji, które są przetwarzane przez program SQL Server.

    t1 = Całkowity czas dla wszystkich transakcji.

    t2 = Średni czas dla pojedynczej transakcji.

    t3 = Średnia liczba transakcji na sekundę.

    Wszystkie czasy są w milisekundach.

    Jeśli określono opcjonalny parametr 1, format wyjściowy statystyk jest w formacie danych rozdzielanych dwukropkami, który może być łatwo zaimportowany do arkusza kalkulacyjnego lub przetwarzany przez skrypt.

    Jeśli opcjonalny parametr ma dowolną wartość inną niż 1, zostanie wygenerowany błąd i nastąpi zamknięcie narzędzia sqlcmd.

  • -X [ 1 ] disable commands, startup script, enviroment variables [and exit]
    Wyłącza polecenia, które mogłyby naruszyć bezpieczeństwo systemu podczas uruchamiania narzędzia sqlcmd z pliku wsadowego.Polecenia wyłączone nadal są rozpoznawane; narzędzie sqlcmd generuje komunikat ostrzeżenia i kontynuuje.Jeśli opcjonalny parametr ma wartość 1, narzędzie sqlcmd generuje komunikat o błędzie i jest zamykane.Następujące polecenia są wyłączone podczas używania opcji -X:

    • ED

    • **!!**command

    Jeśli określono opcję -X, zapobiega ona przekazywaniu zmiennych środowiskowych do narzędzia sqlcmd.Zapobiega także wykonywaniu skrypt uruchamiania określonego przy użyciu zmiennej skryptowej SQLCMDINI.Aby uzyskać więcej informacji na temat zmiennych skryptowych narzędzia sqlcmd, zobacz Polecenie sqlcmd przy użyciu skryptów zmiennych.

  • -? show syntax summary
    Wyświetla podsumowanie składni opcji narzędzia sqlcmd.

Uwagi

Opcje nie muszą być używane w kolejności pokazanej w sekcji Składnia.

Gdy jest zwracanych wiele wyników, narzędzie sqlcmd drukuje pusty wiersz między każdym zestawem wyników w partii.Dodatkowo komunikat „Dotyczy <x> wierszy” nie pojawia się dla wykonywanych instrukcji, do których nie ma zastosowania.

Aby używać narzędzia sqlcmd interaktywnie, w wierszu polecenia wpisz polecenie sqlcmd wraz z dowolną opcją lub opcjami opisanymi we wcześniejszej części tego tematu.Aby uzyskać więcej informacji, zobacz Przy użyciu polecenie sqlcmd, narzędzie.

Ostrzeżenie

Opcje -L, -Q, -Z i -i powodują zamknięcie narzędzia sqlcmd po zakończeniu wykonywania.

Maksymalna długość polecenia narzędzia sqlcmd w wierszu polecenia w środowisku poleceń (Cmd.exe), włączając wszystkie argumenty i zmienne rozszerzone, jest wyznaczona przez maksymalną długość ustaloną dla środowiska Cmd.exe w systemie operacyjnym.

Pierwszeństwo zmiennych (od najniższego do najwyższego)

  1. Systemowe zmienne środowiskowe.

  2. Zmienne środowiskowe użytkownika.

  3. Polecenie powłoki (SET X = Y) należy wykonać w wierszu polecenia przed uruchomieniem narzędzia sqlcmd.

  4. sqlcmd-v X=Y

  5. :Setvar X Y

Ostrzeżenie

Aby wyświetlić zmienne środowiskowe, w Panelu sterowania otwórz aplet System, a następnie kliknij kartę Zaawansowane.

Zmienne skryptowe narzędzia sqlcmd

Zmienna

Pokrewny przełącznik

R/W

Default

SQLCMDUSER

-U

R

""

SQLCMDPASSWORD

-P

--

""

SQLCMDSERVER

-S

R

"DomyślneLokalneWystąpienie"

SQLCMDWORKSTATION

-H

R

"NazwaKomputera"

SQLCMDDBNAME

-d

R

""

SQLCMDLOGINTIMEOUT

-l

R/W

"8" (sekund)

SQLCMDSTATTIMEOUT

-t

R/W

"0" = bezterminowe oczekiwanie

SQLCMDHEADERS

-h

R/W

"0"

SQLCMDCOLSEP

-s

R/W

" "

SQLCMDCOLWIDTH

-w

R/W

"0"

SQLCMDPACKETSIZE

-a

R

"4096"

SQLCMDERRORLEVEL

-m

R/W

0

SQLCMDMAXVARTYPEWIDTH

-y

R/W

"256"

SQLCMDMAXFIXEDTYPEWIDTH

-Y

R/W

"0" = nieograniczony

SQLCMDEDITOR

R/W

"edit.com"

SQLCMDINI

R

""

SQLCMDUSER, SQLCMDPASSWORD i SQLCMDSERVER są ustawiane podczas użycia polecenia :Connect

.

„R” wskazuje, że wartość można ustawić tylko jeden raz podczas inicjalizacji programu.

„R/W” wskazuje, że wartość może być modyfikowana przy użyciu polecenia narzędzia setvar, i późniejsze polecenia będą uzależnione od nowej wartości.

Polecenia narzędzia sqlcmd

Oprócz instrukcji języka Transact-SQL w narzędziu sqlcmd dostępne są również następujące polecenia:

GO [liczba]

:List

[:] RESET

:Error

[:] ED

:Out

[:] !!

:Perftrace

[:] QUIT

:Connect

[:] EXIT

:On Error

:r

:Help

:ServerList

:XML [ON | OFF]

:Setvar

:Listvar

Należy pamiętać o następujących kwestiach podczas używania poleceń narzędzia sqlcmd:

  • Wszystkie polecenia narzędzia sqlcmd, z wyjątkiem GO, muszą być poprzedzone znakiem dwukropka (:).

    Ważna informacjaWażne:

    Aby zachować wsteczną zgodność z istniejącymi skryptami narzędzia osql, niektóre polecenia będzie rozpoznawany bez dwukropka.Wskazane jest to przez oznaczenie [:].

  • Polecenia narzędzia sqlcmd są rozpoznawane tylko wtedy, gdy pojawiają się na początku wiersza.

  • We wszystkich poleceniach narzędzia sqlcmd jest rozróżniana wielkość liter.

  • Każde polecenie musi być w osobnym wierszu.Po poleceniu nie może następować instrukcja języka Transact-SQL ani inne polecenie.

  • Polecenia są wykonywane natychmiast.Nie są one wprowadzane do buforu wykonywania, jak ma to miejsce w przypadku instrukcji języka Transact-SQL.

  • Polecenia edycji

  • [:] ED
    Uruchom edytor tekstu.Edytor może być używany do edytowania bieżącej partii instrukcji języka Transact-SQL lub ostatnio wykonanej partii.Aby edytować ostatnio wykonaną partię, polecenie ED musi być wpisane natychmiast po zakończeniu wykonywania ostatniej partii.

    Edytor tekstu jest określony przez zmienną środowiskową SQLCMDEDITOR.Domyślnym edytorem jest „Edit”.Aby zmienić edytora, należy ustawić zmienną środowiskową SQLCMDEDITOR.Na przykład, aby ustawić edytor Notatnik systemu Microsoft, w wierszu polecenia wpisz:

    SET SQLCMDEDITOR=notepad

  • [:] RESET
    Czyści pamięć podręczną instrukcji.

  • :List
    Drukuje zawartość pamięci podręcznej instrukcji.

  • Zmienne

  • :Setvar <var> [ "value" ]
    Określa zmienne skryptowe narzędzia sqlcmd.Zmienne skryptowe mają następujący format: $(VARNAME).

    W nazwach zmiennych jest rozróżniana wielkość liter.

    Zmienne skryptowe można używać na następujące sposoby:

    • Niejawnie przy użyciu opcji wiersza polecenia.Na przykład opcja -l ustawiania zmienną SQLCMDLOGINTIMEOUT narzędzia sqlcmd.

    • Jawnie przy użyciu polecenia : Setvar.

    • Poprzez określenie zmiennej środowiskowej przed uruchomieniem narzędzia sqlcmd.

    Ostrzeżenie

    Opcja -X zapobiega przekazywaniu zmiennych środowiskowych do narzędzia sqlcmd.

    Jeśli zmienna określona za pomocą polecenia :Setvar i zmienna środowiskowa mają takie same nazwy, zmienna zdefiniowana za pomocą polecenia :Setvar ma pierwszeństwo.

    Nazwy zmiennych nie mogą zawierać znaków spacji.

    Nazwy zmiennych nie mogą mieć takiej samej formy jak zmienne wyrażeń, np. $(var).

    Jeśli wartość zmiennej skryptowej będąca ciągiem tekstowym zawiera spacje, należy ją ująć w cudzysłowy.Jeżeli nie określono wartości zmiennej skryptowej, zmienna jest odrzucana.

  • :Listvar
    Wyświetla listę zmiennych skryptowych, które są aktualnie ustawione.

    Ostrzeżenie

    Tylko zmienne skryptowe, które są ustawiane przez narzędzie sqlcmd, oraz zmienne ustawiane przy użyciu polecenia :Setvar, będą wyświetlane.

  • Polecenia generowania danych wyjściowych

  • :Error **<filename>|STDERR|STDOUT
    Przekierowuje wszystkie wyjściowe informacje o błędach do pliku określonego parametrem file name, stderr lub stdout.Polecenie Error może pojawić się wiele razy w skrypcie.Domyślnie informacje wyjściowe o błędach są wysyłane do strumienia stderr.

    • file name
      Tworzy i otwiera plik, który będzie odbierał dane wyjściowe.Jeżeli plik już istnieje, zostanie przycięty do zerowej długości.Jeśli plik nie jest dostępny z powodu niewystarczających uprawnień lub z innych przyczyn, nie nastąpi przełączenie i dane wyjściowe zostaną wysłane do ostatnio ustawionego lub domyślnej docelowej lokalizacji.

    • STDERR
      Przełącza wysyłanie wyjściowych informacji o błędach do strumienia stderr.Jeśli nastąpiło przekierowanie, dane wyjściowe trafią do docelowej lokalizacji, do której przekierowano strumień.

    • STDOUT
      Przełącza wysyłanie wyjściowych informacji o błędach do strumienia stdout.Jeśli nastąpiło przekierowanie, dane wyjściowe trafią do docelowej lokalizacji, do której przekierowano strumień.

  • :Out <filename>| STDERR| STDOUT
    Tworzy i przekierowuje wszystkie wyniki zapytań do pliku określonego parametrem file name, stderr lub stdout.Domyślnie dane wyjściowe są wysyłane do strumienia stdout.Jeżeli plik już istnieje, zostanie przycięty do zerowej długości.Polecenie Out może pojawić się wiele razy w skrypcie.

  • :Perftrace <filename>| STDERR| STDOUT
    Tworzy i przekierowuje wszystkie informacje o śledzeniu wydajności do pliku określonego parametrem file name, stderr lub stdout.Domyślnie wyniki śledzenia wydajności są wysyłane do strumienia stdout.Jeżeli plik już istnieje, zostanie przycięty do zerowej długości.Polecenie Perftrace może pojawić się wiele razy w skrypcie.

  • Polecenia sterowania wykonywaniem

  • :On Error[ exit | ignore]
    Określa działania, jakie mają być przeprowadzone, jeżeli wystąpi błąd podczas wykonywania skryptu lub partii.

    Jeśli jest używana opcja exit, następuje zamknięcie narzędzia sqlcmd i wyświetlenie odpowiedniego komunikatu o błędzie.

    Gdy jest używana opcja ignore, narzędzie sqlcmd ignoruje błąd i kontynuuje wykonywanie partii lub skryptu.Domyślnie komunikat o błędzie będzie drukowany.

  • [:] QUIT
    Powoduje zamknięcie narzędzia sqlcmd.

  • [:] EXIT[ (statement) ]
    Pozwala używać wyniku instrukcji SELECT jako wartości zwracane z narzędzia sqlcmd.Jeśli wynik jest numeryczny, pierwsza kolumna jego ostatniego wiersza jest konwertowana na 4-bajtową liczbę całkowitą (długą).System MS-DOS przekazuje krótką liczbę procesu nadrzędnego lub jest generowany komunikat o błędzie systemu operacyjnego.W systemie Windows 200x jest przekazywana cała 4-bajtowa liczba całkowita.Składnia jest następująca:

    :EXIT(query)

    Na przykład:

    :EXIT(SELECT @@ROWCOUNT)

    Można również dołączyć parametr EXIT jako część pliku wsadowego.Na przykład w wierszu polecenia wpisz:

    sqlcmd -Q "EXIT(SELECT COUNT(*) FROM '%1')"

    Narzędzie sqlcmd wysyła wszystko pomiędzy nawiasami () do serwera.Jeśli systemowa procedura składowana wybiera zestaw i zwraca wartość, zwracane jest tylko zaznaczenie.Instrukcja EXIT () z brakiem zawartości między nawiasami powoduje wykonanie wszystkich elementów znajdujących się przed nią w partii, a następnie kończy działanie bez zwracania wartości.

    Jeśli określono niepoprawne zapytanie, narzędzie sqlcmd jest zamykane bez zwracania wartości.

    Oto lista formatów instrukcji EXIT:

    • :EXIT

    Nie inicjuje przetwarzania partii, a następnie natychmiast kończy działanie i nie zwraca żadnej wartości.

    • :EXIT( )

    Inicjuje przetwarzanie partii, a następnie kończy działanie i nie zwraca żadnej wartości.

    • :EXIT(zapytanie)

    Inicjuje przetwarzanie partii zawierającej zapytanie, a następnie zwracania wynik zapytania i kończy działanie.

    Jeśli w skrypcie narzędzia sqlcmd jest użyty parametr RAISERROR i zostanie zgłoszony stan 127, narzędzie sqlcmd zostanie zamknięte i zwróci wiadomość o tym identyfikatorze do klienta.Na przykład:

    RAISERROR(50001, 10, 127)

    Ten błąd będzie powodować zakończenie wykonywania skryptu narzędzia sqlcmd i zwrócenie wiadomości o identyfikatorze 50001 do klienta.

    Zwracane wartości od -1 do -99 są zarezerwowane dla narzędzia SQL Server. Narzędzie sqlcmd może zwracać następujące dodatkowe wartości:

    Zwracane wartości

    Opis

    -100

    Przed wybraniem zwracanej wartości wystąpił błąd.

    -101

    Nie znaleziono żadnych wierszy podczas wybierania wartości zwracanej.

    -102

    Wystąpił błąd konwersji podczas wybierania wartości zwracanej.

  • GO [liczba]
    Polecenie GO sygnalizuje koniec partii oraz wykonywania wszelkich instrukcji języka Transact-SQL umieszczonych w pamięci podręcznej.Określając wartość parametru count należy pamiętać, że instrukcje zawarte w pamięci podręcznej zostaną wykonane count razy w ramach pojedynczej partii.

  • Różne polecenia

  • :r <filename>
    Analizuje składnię dodatkowych instrukcji języka Transact-SQL oraz poleceń narzędzia sqlcmd zawartych w pliku określonym parametrem <filename> i umieszczenie ich w pamięci podręcznej instrukcji.

    Jeśli plik zawiera instrukcje języka Transact-SQL, po których nie następuje polecenie GO,należy wprowadzić polecenie GO w wierszu, który następuje po poleceniu :r.

    Ostrzeżenie

    <filename> jest odczytywana względem katalogu startowego, w którym uruchomiono narzędzie sqlcmd.

    Plik zostanie odczytany i wykonany po napotkania terminatora partii.Można umieścić wiele poleceń :r.Plik może zawierać dowolne polecenia narzędzia sqlcmd.Obejmuje to terminator partii GO.

    Ostrzeżenie

    Liczba wierszy wyświetlanych w trybie interakcyjnym zostanie zwiększona o jeden dla każdego napotkanego polecenia :r.Polecenie :r będzie wyświetlane w danych wyjściowych polecenia generowania listy.

  • :Serverlist
    Wyświetla listę lokalnie skonfigurowanych serwerów oraz nazwy serwerów, które transmitują dane w sieci.

  • :Connect server_name[**\**instance_name] [-l timeout] [-U user_name [-P password]]
    Łączy z wystąpieniem programu SQL Server.Również zamyka bieżące połączenie.

    Opcje limit czasu:

    0

    bezterminowe oczekiwanie

    n>0

    oczekiwanie przez n sekund

    Zmienna skryptowa SQLCMDSERVER będzie odzwierciedlała obecnie aktywne połączenie.

    Jeśli nie określono parametru timeout, zmienna SQLCMDLOGINTIMEOUT przyjmuje wartość domyślną.

    Jeśli określono tylko parametr user_name (jako opcję lub jako zmienną środowiskową), użytkownik będzie monitowany o wprowadzenie hasła.Nie dotyczy do sytuacji, jeśli została ustawiona zmienna środowiskowa SQLCMDUSER lub SQLCMDPASSWORD.Jeśli nie określono opcji ani zmiennych środowiskowych, tryb uwierzytelniania systemu Windows jest używany do logowania.Na przykład aby połączyć się z wystąpieniem instance1 programu SQL Server o nazwie myserver przy użyciu zintegrowanych zabezpieczeń, należałoby użyć następującej składni:

    :connect myserver\instance1

    Aby połączyć się z domyślnym wystąpieniem myserver za pomocą zmiennych skryptowych, należałoby użyć następującej składni:

    :setvar myusername test

    :setvar myservername myserver

    :connect $(myservername) $(myusername)

  • [:] !!< command>
    Wykonuje polecenia systemu operacyjnego.Aby wykonać polecenie systemu operacyjnego, rozpocznij wiersz od dwóch wykrzykników (!), a następnie wpisz polecenie systemu operacyjnego.Na przykład:

    :!! Dir

    Ostrzeżenie

    Polecenie jest wykonywane na komputerze, na którym uruchomiono narzędzie sqlcmd.

  • :XML [ON | OFF]
    Aby uzyskać więcej informacji, zobacz sekcję „Format wyjściowy XML” w dalszej części tego tematu.

  • :Help
    Wyświetla listę poleceń narzędzia sqlcmd wraz z krótkim opisem każdego polecenia.

Nazwy plików narzędzia sqlcmd

Pliki danych wejściowych narzędzia sqlcmd mogą być określone za pomocą opcji -i lub polecenia :r.Pliki danych wyjściowych mogą być określane za pomocą opcji -o lub poleceń :Error, :Out i**:Perftrace**.Wskazówki dotyczące pracy z tymi plikami są następujące:

  • Dla poleceń :Error, :Out i :Perftrace należy używać parametru <filename> o różnych wartościach.Jeśli zostanie użyta ta sama wartość parametru <filename>, dane wejściowe poleceń mogą się zmieszać.

  • Jeśli plik wejściowy, który znajduje się na serwerze zdalnym, jest wywoływany z narzędzia sqlcmd na komputerze lokalnym i zawiera dyskową ścieżkę pliku, na przykład :out c:\OutputFile.txt.Plik wyjściowy będzie utworzony na komputerze lokalnym, a nie na serwerze zdalnym.

  • Prawidłowe są następujące ścieżki plików: C:\<filename>,\\<serwer>\<udział$>\<filename> i "C:\Jakiś folder\<file name>".Jeśli w ścieżce jest spacja, użyj znaków cudzysłowu.

  • Każda nowa sesja narzędzia sqlcmd zastąpi istniejące pliki, które mają te same nazwy.

Komunikaty informacyjne

Narzędzie sqlcmd drukuje każdy komunikat informacyjny wysyłany przez serwer.W poniższym przykładzie po wykonaniu instrukcji języka Transact-SQL jest drukowany komunikat informacyjny.

W wierszu polecenia wpisz:

sqlcmd

At the sqlcmd prompt type:

USE AdventureWorks2008R2;

GO

Po naciśnięciu klawisza ENTER drukowany jest następujący komunikat informacyjny: „Zmieniono kontekst bazy danych na AdventureWorks2008R2.”

Format danych wyjściowych z zapytań języka Transact-SQL

Narzędzie sqlcmd najpierw drukuje nagłówek kolumny, który zawiera nazwy kolumn określone na liście wyboru.Nazwy kolumn są oddzielone za pomocą znaku SQLCMDCOLSEP.Domyślnie jest to spacja.Jeśli nazwa kolumny jest krótsza niż szerokość kolumny, dane wyjściowe są dopełniane spacjami do granicy z następną kolumną.

Po tym wierszu będzie następować wiersz separatora, którym jest szereg znaków kreski.Poniżej pokazano przykład danych wyjściowych:

Uruchom program sqlcmd.W wierszu polecenia narzędzia sqlcmd wpisz:

USE AdventureWorks2008R2;

SELECT TOP (2) BusinessEntityID, FirstName, LastName

FROM Person.Person;

GO

Po naciśnięciu klawisza ENTER następujący zestaw wyników jest zwracany.

BusinessEntityID FirstName    LastName

---------------- ------------ ----------

285              Syed         Abbas

293              Catherine    Abel

(2 row(s) affected)

Kolumna BusinessEntityID jest szeroka tylko na 4 znaki, dlatego została rozszerzona, aby pomieścić dłuższą nazwę kolumny.Domyślnie dane wyjściowe kończą się na 80 znakach.Można to zmienić za pomocą opcji -w lub przez ustawienie zmiennej skryptowej SQLCMDCOLWIDTH.

Format wyjściowy XML

Dane wyjściowe XML będące wynikiem wykonania klauzuli XML FOR są generowane bez formatowania w postaci ciągłego strumienia.

Jeśli potrzebujesz danych wyjściowych w formacie XML, użyj następującego polecenia: :XML ON.

Ostrzeżenie

Narzędzie sqlcmd zwraca komunikaty o błędach w zwykłym formacie.Należy zauważyć, że komunikaty o błędach są również generowane w formacie XML w postaci strumienia tekstu XML.Za pomocą opcji :XML ON można sprawić, że narzędzie sqlcmd nie będzie wyświetlało komunikatów informacyjnych.

Aby wyłączyć tryb XML, należy użyć następującego polecenia: :XML OFF.

Polecenie GO nie powinno się pojawiać się przed wykonaniem polecenia XML OFF, ponieważ polecenie OFF przełącza narzędzie sqlcmd z powrotem do generowania danych wyjściowych z podziałem na wiersze.

Dane XML (przesyłane strumieniowo) i dane w postaci zestawu wierszy nie mogą być mieszane.Jeśli polecenie XML ON nie zostało wykonane przed wykonaniem polecenia narzędzia Transact-SQL powodującego generowanie danych wyjściowych w postaci strumienia XML, dane wyjściowe będą zniekształcone.Jeśli polecenie XML ON zostało wykonane, nie można wykonać instrukcji narzędzia Transact-SQL powodujących generowanie standardowych zestawów wierszy.

Ostrzeżenie

Polecenie :XML nie obsługuje instrukcji XML SET STATISTICS.

Najlepsze praktyki dotyczące narzędzia sqlcmd

Użyj następujących praktyk w celu zapewnienia maksymalnego bezpieczeństwa i efektywności.

  • Używaj zintegrowanych zabezpieczeń.

  • W zautomatyzowanych środowiskach używaj opcji -X.

  • Zabezpieczaj pliki danych wejściowych i wyjściowych przy użyciu odpowiednich uprawnień systemu plików NTFS.

  • Aby zwiększyć wydajność, wykonuj jak najwięcej w jednej sesji narzędzia sqlcmd zamiast dzielić pracę na kilka sesji.

  • Ustawiaj wartości limitów czasu dla przetwarzania wsadowego i wykonywania zapytań na poziomie wyższym niż oczekiwany czas przetwarzania.