Uwaga
Dostęp do tej strony wymaga autoryzacji. Może 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)
SQL Database w usłudze Microsoft Fabric
Narzędzie sqlcmd umożliwia wprowadzanie instrukcji Transact-SQL, procedur systemowych i plików skryptów za pomocą różnych trybów:
- W wierszu polecenia.
- W Edytorze zapytań w trybie SQLCMD.
- W pliku skryptu systemu Windows.
- W systemie operacyjnym (
cmd.exe
) krok zadania agenta programu SQL Server.
Notatka
Chociaż identyfikator Entra firmy Microsoft to nowa nazwa usługi Azure Active Directory (Azure AD), aby zapobiec zakłócaniu działania istniejących środowisk, usługa Azure AD nadal pozostaje w niektórych zakodowanych na stałe elementach, takich jak pola interfejsu użytkownika, dostawcy połączeń, kody błędów i polecenia cmdlet. W tym artykule dwie nazwy są wymienne.
warianty narzędzia sqlcmd
Istnieją dwa warianty sqlcmd:
sqlcmd (Go):
go-mssqldb
oparty na narzędziu sqlcmd, czasami stylizowany jako go-sqlcmd. Ta wersja jest autonomicznym narzędziem, które można pobrać niezależnie od programu SQL Server. Działa on w systemach Windows, macOS, Linux i w kontenerach.sqlcmd (ODBC): narzędzie sqlcmd oparte na platformie, oparte na protokole ODBC, dostępne z programem SQL Server lub narzędziami wiersza polecenia firmy Microsoft oraz część
mssql-tools
pakietu w systemie Linux. Działa również w systemach Windows, macOS, Linux i w kontenerach.
Aby dowiedzieć się, który wariant i wersja narzędzia sqlcmd jest zainstalowany w systemie, zobacz Sprawdzanie zainstalowanej wersji narzędzia sqlcmd.
Aby uzyskać informacje na temat pobierania narzędzia sqlcmd, zobacz Pobieranie i instalowanie narzędzia sqlcmd.
Obsługa protokołu TDS 8.0
Program SQL Server 2025 (17.x) w wersji zapoznawczej wprowadza obsługę TDS 8.0 dla narzędzia sqlcmd .
Składnia
- sqlcmd (Przejdź)
- sqlcmd (ODBC)
Usage:
sqlcmd [flags]
sqlcmd [command]
Examples:
# Install/Create, Query, Uninstall SQL Server
sqlcmd create mssql --accept-eula --using https://aka.ms/AdventureWorksLT.bak
sqlcmd open ads
sqlcmd query "SELECT @@version"
sqlcmd delete
# View configuration information and connection strings
sqlcmd config view
sqlcmd config cs
Available Commands:
completion Generate the autocompletion script for the specified shell
config Modify sqlconfig files using subcommands like "sqlcmd config use-context mssql"
create Install/Create SQL Server, Azure SQL, and Tools
delete Uninstall/Delete the current context
help Help about any command
open Open tools (e.g ADS) for current context
query Run a query against the current context
start Start current context
stop Stop current context
Flags:
-?, --? help for backwards compatibility flags (-S, -U, -E etc.)
-h, --help help for sqlcmd
--sqlconfig string configuration file (default "/Users/<currentUser>/.sqlcmd/sqlconfig")
--verbosity int log level, error=0, warn=1, info=2, debug=3, trace=4 (default 2)
--version print version of sqlcmd
Use "sqlcmd [command] --help" for more information about a command.
Aby uzyskać bardziej szczegółowe informacje na temat składni i użycia sqlcmd, zobacz składnię sqlcmd ODBC.
Zmiany łamiące zgodność z poleceniem sqlcmd (ODBC)
W narzędziu sqlcmd (Go) zmienia się kilka przełączników i zachowań. Aby uzyskać najbardziej aktualną listę brakujących flag w celu zapewnienia zgodności wstecznej, odwiedź dyskusję Określanie priorytetów implementacji flag wstecznych zgodności na GitHub.
We wcześniejszych wersjach sqlcmd (Go) przełącznik
-P
został tymczasowo usunięty, a hasła do uwierzytelniania programu SQL Server mogą być udostępniane tylko za pomocą następujących mechanizmów:- Zmienna środowiskowa
SQLCMDPASSWORD
- Polecenie
:CONNECT
- Po wyświetleniu monitu użytkownik może wpisać hasło, aby ukończyć połączenie
- Zmienna środowiskowa
-r
wymaga argumentu0
lub1
Usuwany jest przełącznik
-R
.Usuwany jest przełącznik
-I
. Aby wyłączyć zachowanie cytowanego identyfikatora, dodajSET QUOTED IDENTIFIER OFF
w swoich skryptach.-N
przyjmuje wartość ciągu, która może być jedną ztrue
,false
lubdisable
, aby określić wybór szyfrowania. (default
jest taka sama jak pominięcie parametru)- Jeśli nie podano
-N
i-C
, sqlcmd negocjuje uwierzytelnianie z serwerem bez sprawdzania poprawności certyfikatu serwera. - Jeśli
-N
jest podana, ale-C
nie, sqlcmd wymaga weryfikacji certyfikatu serwera. Wartośćfalse
dla szyfrowania może nadal prowadzić do zaszyfrowania pakietu logowania. - Jeśli podano zarówno
-N
, jak i-C
, sqlcmd używa ich wartości do negocjacji szyfrowania. - Więcej informacji na temat negocjacji szyfrowania klienta/serwera można znaleźć w MS-TDS PRELOGIN.
Ważny
W wersji zapoznawczej programu SQL Server 2025 (17.x)
-N
może być ustawione jakoo
(dlaoptional
),m
(dlamandatory
, wartość domyślna) lubs
(dlastrict
). Jeśli nie dołączysz-N
,-Nm
(dlamandatory
) jest wartością domyślną. Jest to zmiana wprowadzająca niezgodność w programie SQL Server 2022 (16.x) i starszych wersjach.- Jeśli nie podano
-u
Wygenerowany plik wyjściowy Unicode ma zapisany w nim znacznik kolejności bajtów (BOM) UTF-16 Little-Endian.Niektóre zachowania, które były przechowywane w celu zachowania zgodności z
OSQL
, mogły ulec zmianie, takie jak wyrównanie nagłówków kolumn dla niektórych typów danych.Wszystkie polecenia muszą mieścić się w jednym wierszu, nawet
EXIT
. Tryb interaktywny nie sprawdza, czy polecenia mają otwarte nawiasy lub cudzysłowy, i nie wyświetla monitu do wpisania kolejnych wierszy. To zachowanie różni się od wersji ODBC, która umożliwia uruchamianie zapytania przezEXIT(query)
w wielu wierszach.
Połączenia z narzędzia sqlcmd (Go) są ograniczone do połączeń TCP. Kanały nazwane nie są obecnie obsługiwane w sterowniku go-mssqldb
.
Ulepszenia
:Connect
Ma opcjonalny-G
parametr do wybrania jednej z metod uwierzytelniania dla usługi Azure SQL Database —SqlAuthentication
, ,ActiveDirectoryDefault
ActiveDirectoryIntegrated
,ActiveDirectoryServicePrincipal
,ActiveDirectoryManagedIdentity
ActiveDirectoryPassword
. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft w narzędziu sqlcmd. Jeśli nie podano-G
, jest używane zintegrowane zabezpieczenia lub uwierzytelnianie programu SQL Server, w zależności od obecności parametru nazwy użytkownika-U
.Parametr
--driver-logging-level
wiersza polecenia umożliwia wyświetlanie śladów zego-mssqldb
sterownika. Użyj64
, aby wyświetlić wszystkie ślady.narzędzie sqlcmd (Go) może drukować wyniki przy użyciu formatu pionowego. Użyj przełącznika
-F vertical
wiersza polecenia, aby go ustawić. ZmiennaSQLCMDFORMAT
skryptów kontroluje ją również.Notatka
Różni się to od
-F
przełącznika sqlcmd (ODBC), który jest używany-N
do określania nazwy hosta w certyfikacie.
Opcje wiersza polecenia
W poniższej tabeli wymieniono opcje wiersza polecenia dostępne w narzędziu sqlcmd i obsługiwane przez nie systemy operacyjne.
Opcje związane z logowaniem
-A
Dotyczy: tylko dla Windows. Systemy Linux i macOS nie są obsługiwane.
Zaloguje się do programu SQL Server przy użyciu dedykowanego połączenia administratora (DAC). Tego rodzaju połączenie służy do rozwiązywania problemów z serwerem. To połączenie działa tylko z komputerami serwerów obsługującymi DAC. Jeśli funkcja DAC nie jest dostępna, sqlcmd generuje komunikat o błędzie, a następnie kończy działanie. Aby uzyskać więcej informacji na temat funkcji DAC, zobacz Połączenie diagnostyczne dla administratorów bazy danych. Opcja -A
nie jest obsługiwana w przypadku opcji -G
. Podczas nawiązywania połączenia z usługą Azure SQL Database przy użyciu -A
musisz być administratorem na serwerze logicznym SQL. DAC nie jest dostępny dla administratora firmy Microsoft Entra.
Notatka
Aby uzyskać informacje na temat tworzenia dedykowanego połączenia administratora (DAC) w systemie macOS lub Linux, zobacz Wytyczne dotyczące programowania.
-C
Ta opcja jest używana przez klienta do konfigurowania go w celu niejawnego zaufania certyfikatowi serwera bez walidacji. Ta opcja jest odpowiednikiem opcji ADO.NET TRUSTSERVERCERTIFICATE = true
.
W przypadku narzędzia sqlcmd (Go) obowiązują również następujące warunki:
- Jeśli nie podano
-N
i-C
, sqlcmd negocjuje uwierzytelnianie z serwerem bez sprawdzania poprawności certyfikatu serwera. - Jeśli
-N
jest podana, ale-C
nie, sqlcmd wymaga weryfikacji certyfikatu serwera. Wartośćfalse
dla szyfrowania może nadal prowadzić do zaszyfrowania pakietu logowania. - Jeśli podano zarówno
-N
, jak i-C
, sqlcmd używa ich wartości do negocjacji szyfrowania.
-d db_name
Wydaje instrukcję USE <db_name>
podczas uruchamiania sqlcmd. Ta opcja ustawia zmienną skryptową sqlcmdSQLCMDDBNAME
. Ten parametr określa początkową bazę danych. Wartość domyślna to domyślna właściwość bazy danych logowania. Jeśli baza danych nie istnieje, zostanie wygenerowany komunikat o błędzie i sqlcmd kończy działanie.
-D
Interpretuje nazwę serwera podaną do -S
jako nazwę DSN zamiast nazwy hosta. Więcej informacji można znaleźć w sekcji Obsługa DSN w sqlcmd i bcp.
Notatka
Opcja -D
jest dostępna tylko na klientach z systemami Linux i macOS. Na klientach z systemem Windows odwołuje się ona do przestarzałej opcji, która została usunięta i jest ignorowana.
-l login_timeout
Określa liczbę sekund przed upływem limitu czasu logowania sqlcmd do sterownika ODBC podczas próby połączenia się z serwerem. Ta opcja ustawia zmienną skryptową sqlcmdSQLCMDLOGINTIMEOUT
. Domyślny limit czasu logowania do sqlcmd wynosi 8 sekund. W przypadku używania opcji nawiązywania -G
połączenia z usługą Azure SQL Database lub Azure Synapse Analytics i uwierzytelniania przy użyciu identyfikatora Entra firmy Microsoft zaleca się przekroczenie limitu czasu co najmniej 30 sekund. Limit czasu logowania musi być liczbą między 0
a 65534
. Jeśli podana wartość nie jest liczbowa lub nie mieści się w tym zakresie, sqlcmd generuje komunikat o błędzie. Wartość 0
określa limit czasu, który ma być nieskończony.
-E
Używa zaufanego połączenia zamiast używa nazwy użytkownika i hasła do logowania się do programu SQL Server. Domyślnie, jeśli -E
nie jest określone, sqlcmd używa opcji zaufanego połączenia.
Opcja -E
ignoruje możliwe ustawienia zmiennej środowiskowej nazwy użytkownika i hasła, takie jak SQLCMDPASSWORD
. Jeśli opcja -E
jest używana razem z opcją -U
lub opcją -P
, zostanie wygenerowany komunikat o błędzie.
Notatka
Aby uzyskać więcej informacji na temat tworzenia zaufanych połączeń korzystających z zintegrowanego uwierzytelniania z klienta systemu Linux lub macOS, zobacz Using Integrated Authentication (Korzystanie ze zintegrowanego uwierzytelniania).
-g
Ustawia Szyfrowanie kolumny na Enabled
. Aby uzyskać więcej informacji, zobacz Always Encrypted. Obsługiwane są tylko klucze główne przechowywane w magazynie certyfikatów systemu Windows. Opcja -g
wymaga co najmniej sqlcmd w wersji 13.1. Aby określić wersję, wykonaj sqlcmd -?
.
-G
Ta opcja jest używana przez klienta podczas nawiązywania połączenia z usługą Azure SQL Database lub Azure Synapse Analytics w celu określenia, czy użytkownik jest uwierzytelniany przy użyciu uwierzytelniania firmy Microsoft Entra. Ta opcja ustawia zmienną skryptową sqlcmdSQLCMDUSEAAD = true
. Opcja -G
wymaga co najmniej sqlcmd w wersji 13.1. Aby określić wersję, wykonaj sqlcmd -?
. Aby uzyskać więcej informacji, zobacz Microsoft Entra authentication for Azure SQL (Uwierzytelnianie entra firmy Microsoft dla usługi Azure SQL). Opcja -A
nie jest obsługiwana w przypadku opcji -G
.
Opcja -G
dotyczy tylko usług Azure SQL Database i Azure Synapse Analytics.
Uwierzytelnianie interakcyjne firmy Microsoft Entra nie jest obecnie obsługiwane w systemie Linux lub macOS. Zintegrowane uwierzytelnianie firmy Microsoft wymaga pobrania sterownika ODBC dla programu SQL Server w wersji 17.6.1 lub nowszej oraz prawidłowo skonfigurowanego środowiska Kerberos.
Aby uzyskać więcej informacji na temat uwierzytelniania entra firmy Microsoft, zobacz Authentication with Microsoft Entra ID in sqlcmd (Uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft w narzędziu sqlcmd).
-H nazwa_stacji_roboczej
Nazwa stacji roboczej. Ta opcja ustawia zmienną skryptową sqlcmdSQLCMDWORKSTATION
. Nazwa stacji roboczej znajduje się w kolumnie hostname
widoku katalogu sys.sysprocesses
i może zostać zwrócona przy użyciu procedury przechowywanej sp_who
. Jeśli ta opcja nie jest określona, wartością domyślną jest bieżąca nazwa komputera. Ta nazwa może służyć do identyfikowania różnych sesji sqlcmd.
-j
Wyświetla nieprzetworzone komunikaty o błędach na ekranie.
-K zamiar_aplikacji
Deklaruje typ obciążenia aplikacji podczas nawiązywania połączenia z serwerem. Jedyną obecnie obsługiwaną wartością jest ReadOnly
. Jeśli nie określono -K
, sqlcmd nie obsługuje łączności z repliką pomocniczą w grupie dostępności. Aby uzyskać więcej informacji, zobacz Odciążanie obciążenia tylko do odczytu do pomocniczej repliki zawsze włączonej grupy dostępności.
Notatka
-K
nie jest obsługiwany w systemie SUSE Linux Enterprise Server (SLES). Można jednak określić ApplicationIntent=ReadOnly
słowo kluczowe w pliku DSN przekazanym do narzędzia sqlcmd. Aby uzyskać więcej informacji, zobacz DsN Support in sqlcmd and bcp w dalszej części tego artykułu.
Aby uzyskać więcej informacji, zobacz Wysoka dostępność i odzyskiwanie po awarii w systemach Linux i macOS.
-M multisubnet_failover
Zawsze określ -M
podczas nawiązywania połączenia ze słuchaczem grupy dostępności SQL Server lub instancją klastra trybu failover SQL Server.
-M
zapewnia szybsze wykrywanie i nawiązywanie połączenia z (obecnie) aktywnym serwerem. Jeśli nie określono -M
, -M
jest wyłączona.
Aby uzyskać więcej informacji, zobacz:
- Nawiązywanie połączenia z odbiornikiem zawsze włączonej grupy dostępności
- Referencja dotycząca tworzenia i konfigurowania Always On grup dostępności
- Klastrowanie awaryjne i Grupy dostępności Always On (SQL Server)
- Przeniesienie obciążenia tylko do odczytu na pomocniczą replikę Always On grupy dostępności
Notatka
-M
nie jest obsługiwany w systemie SUSE Linux Enterprise Server (SLES). Można jednak określić MultiSubnetFailover=Yes
słowo kluczowe w pliku DSN przekazanym do narzędzia sqlcmd. Aby uzyskać więcej informacji, zobacz DsN Support in sqlcmd and bcp w dalszej części tego artykułu.
Aby uzyskać więcej informacji, zobacz Wysoka dostępność i odzyskiwanie po awarii w systemach Linux i macOS.
-N
Ta opcja jest używana przez klienta do żądania zaszyfrowanego połączenia.
W przypadku narzędzia sqlcmd (Go) przyjmuje wartość ciągu, -N
która może być jedną z true
, false
lub disable
, aby określić wybór szyfrowania. (default
jest taka sama jak pominięcie parametru):
Notatka
W systemach Linux i macOS [s|m|o]
dodano polecenie sqlcmd 18.0.
-N
może być o
(dla optional
), m
(dla mandatory
, wartością domyślną) lub s
(dla strict
). W wersji zapoznawczej programu SQL Server 2025 (17.x), jeśli nie dołączysz -N
, -Nm
(dla mandatory
) jest ustawieniem domyślnym. Jest to zmiana, która wprowadza niezgodność z SQL Server 2022 (16.x) i wcześniejszymi wersjami, gdzie -No
jest domyślna.
Jeśli nie podano
-N
i-C
, sqlcmd negocjuje uwierzytelnianie z serwerem bez sprawdzania poprawności certyfikatu serwera.Jeśli
-N
jest podana, ale-C
nie, sqlcmd wymaga weryfikacji certyfikatu serwera. Wartośćfalse
dla szyfrowania może nadal prowadzić do zaszyfrowania pakietu logowania.Jeśli podano zarówno
-N
, jak i-C
, sqlcmd używa ich wartości do negocjacji szyfrowania.W programie sqlcmd (ODBC) użyj polecenia
-F
, aby określić nazwę hosta w certyfikacie. Na przykład:sqlcmd -S server01 -Q "SELECT TOP 100 * FROM WideWorldImporters.Sales.Orders" -A -Ns -F server01.adventure-works.com
Notatka
Różni się to od przełącznika
-F
sqlcmd (Go), który służy do drukowania wyników przy użyciu formatu pionowego.
-P hasło
Hasło określone przez użytkownika. W hasłach jest rozróżniana wielkość liter.
-U
Jeśli ta opcja jest używana, -P
opcja nie jest używana, a SQLCMDPASSWORD
zmienna środowiskowa nie jest ustawiona, polecenie sqlcmd monituje użytkownika o podanie hasła. Nie zalecamy używania hasła o wartości null (pustej), ale można określić hasło o wartości null przy użyciu pary ciągłych podwójnych cudzysłowów dla wartości parametru (""
).
Ważny
Używanie -P
należy uznać za niezabezpieczone. Unikaj podawania hasła w wierszu polecenia. Alternatywnie użyj zmiennej środowiskowej SQLCMDPASSWORD
lub interaktywnie wprowadź hasło, pomijając opcję -P
.
Zalecamy użycie silnego hasła.
Monit o hasło jest wywoływany przez wydrukowanie go na konsoli w następujący sposób: Password:
Dane wejściowe użytkownika są ukryte. Oznacza to, że nic nie jest wyświetlane, a kursor pozostaje w pozycji.
Zmienna środowiskowa SQLCMDPASSWORD
umożliwia ustawienie domyślnego hasła dla bieżącej sesji. W związku z tym hasła nie muszą być zakodowane w plikach wsadowych. Poniższy przykład najpierw ustawia zmienną SQLCMDPASSWORD
w wierszu polecenia, a następnie uzyskuje dostęp do narzędzia sqlcmd.
W wierszu polecenia wpisz następujące polecenie. Zastąp <password>
prawidłowym hasłem.
SET SQLCMDPASSWORD=<password>
sqlcmd
SET SQLCMDPASSWORD=<password>
sqlcmd
SET SQLCMDPASSWORD=<password>
sqlcmd
Jeśli nazwa użytkownika i kombinacja hasła są niepoprawne, zostanie wygenerowany komunikat o błędzie.
Notatka
Zmienna OSQLPASSWORD
środowiskowa jest zachowywana pod kątem zgodności z poprzednimi wersjami. Zmienna środowiskowa SQLCMDPASSWORD
ma pierwszeństwo przed zmienną środowiskową OSQLPASSWORD
. Oznacza to, że sqlcmd i osql mogą być używane obok siebie bez zakłóceń. Stare skrypty nadal działają.
Jeśli opcja -P
jest używana z opcją -E
, zostanie wygenerowany komunikat o błędzie.
Jeśli po -P
następuje więcej niż jeden argument, zostanie wygenerowany komunikat o błędzie i program zakończy działanie.
Hasło zawierające znaki specjalne może wygenerować komunikat o błędzie. W przypadku używania -P
należy unikać znaków specjalnych lub użyć zmiennej środowiskowej SQLCMDPASSWORD
.
W systemach Linux i macOS w przypadku używania z opcją -G
bez -U
parametru -P
określa plik zawierający token dostępu (wersja 17.8 lub nowsza). Plik tokena powinien być w formacie UTF-16LE (bez BOM).
Tokeny dostępu można uzyskać na różne sposoby. Należy upewnić się, że token dostępu jest poprawny bajt po bajcie, ponieważ jest wysyłany as-is. Poniżej znajduje się przykładowa komenda, która uzyskuje token dostępu. Polecenie używa interfejsu wiersza poleceń Azure CLI oraz poleceń systemu Linux i zapisuje wyniki do pliku w odpowiednim formacie. Jeśli domyślne kodowanie twojego systemu lub terminala nie jest ASCII lub UTF-8, może być konieczne dostosowanie opcji iconv
. Upewnij się, że ostrożnie zabezpieczysz powstały plik i usuniesz go, gdy nie będzie już potrzebny.
az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
-S [protocol:]server[\nazwa_instancji][,port]
Określa wystąpienie SQL Server, z którym należy się połączyć. Ustawia zmienną skryptową sqlcmdSQLCMDSERVER
.
Określ server_name, aby nawiązać połączenie z domyślnym wystąpieniem programu SQL Server na tym serwerze. Określ server_name[\instance_name] w celu nawiązania połączenia z nazwanym wystąpieniem programu SQL Server na tym komputerze serwera. Jeśli nie określono komputera serwera, sqlcmd nawiązuje połączenie z domyślnym wystąpieniem programu SQL Server na komputerze lokalnym. Ta opcja jest wymagana podczas wykonywania sqlcmd z komputera zdalnego w sieci.
protokół może być tcp
(TCP/IP), lpc
(pamięć współdzielona) lub np
(nazwane potoki).
Jeśli nie określisz server_name[\instance_name] podczas uruchamiania sqlcmd, program SQL Server sprawdza i używa zmiennej środowiskowej SQLCMDSERVER
.
Notatka
Zmienna OSQLSERVER
środowiskowa jest zachowywana pod kątem zgodności z poprzednimi wersjami. Zmienna środowiskowa SQLCMDSERVER
ma pierwszeństwo przed zmienną środowiskową OSQLSERVER
. Oznacza to, że sqlcmd i osql mogą być używane obok siebie bez zakłóceń. Stare skrypty nadal działają.
Sterownik ODBC w systemach Linux i macOS wymaga -S
. Jedyną prawidłową wartością protokołu jest tcp
.
-U identyfikator_logowania
Nazwa logowania lub nazwa użytkownika zawarta w bazie danych. W przypadku użytkowników zawartej bazy danych należy podać opcję nazwy bazy danych (-d
).
Notatka
Zmienna OSQLUSER
środowiskowa jest zachowywana pod kątem zgodności z poprzednimi wersjami. Zmienna środowiskowa SQLCMDUSER
ma pierwszeństwo przed zmienną środowiskową OSQLUSER
. Oznacza to, że sqlcmd i osql mogą być używane obok siebie bez zakłóceń. Stare skrypty nadal działają.
Jeśli nie określisz opcji -U
lub opcji -P
, sqlcmd próbuje nawiązać połączenie przy użyciu trybu uwierzytelniania systemu Windows. Uwierzytelnianie jest oparte na koncie systemu Windows użytkownika, który uruchamia sqlcmd.
Jeśli opcja -U
jest używana z opcją -E
(opisaną w dalszej części tego artykułu), zostanie wygenerowany komunikat o błędzie. Jeśli po -U
następuje więcej niż jeden argument, zostanie wygenerowany komunikat o błędzie i program zakończy działanie.
-z nowe_hasło
Zmień hasło. Zastąp <oldpassword>
starym hasłem i <newpassword>
nowym hasłem.
sqlcmd -U someuser -P <oldpassword> -z <newpassword>
sqlcmd -U someuser -P <oldpassword> -z <newpassword>
sqlcmd -U someuser -P <oldpassword> -z <newpassword>
-Z nowe_hasło
Zmień hasło i zakończ pracę. Zastąp <oldpassword>
starym hasłem i <newpassword>
nowym hasłem.
sqlcmd -U someuser -P <oldpassword> -Z <newpassword>
sqlcmd -U someuser -P <oldpassword> -Z <newpassword>
sqlcmd -U someuser -P <oldpassword> -Z <newpassword>
Opcje danych wejściowych/wyjściowych
-f strona kodowa | i:strona kodowa[,o:strona kodowa] | o:strona kodowa[,i:strona kodowa]
Określa strony kodu wejściowego i wyjściowego. Numer strony kodowej to wartość liczbowa określająca zainstalowaną stronę kodową systemu Windows.
Reguły konwersji strony kodowej:
Jeśli nie określono żadnych stron kodu, sqlcmd używa bieżącej strony kodowej dla plików wejściowych i wyjściowych, chyba że plik wejściowy jest plikiem Unicode, w tym przypadku nie jest wymagana konwersja.
sqlcmd automatycznie rozpoznaje zarówno pliki wejściowe Big-Endian, jak i Little-Endian Unicode. Jeśli opcja jest określona
-u
, dane wyjściowe są zawsze mało endian Unicode.Jeśli nie określono pliku wyjściowego, strona kodowa danych wyjściowych jest stroną kodową konsoli. To podejście umożliwia poprawne wyświetlanie danych wyjściowych w konsoli.
Zakłada się, że wiele plików wejściowych ma tę samą stronę kodową. Pliki wejściowe w formacie Unicode i w formatach innych niż Unicode mogą być mieszane.
Wprowadź chcp
w wierszu polecenia, aby zweryfikować stronę kodową cmd.exe
.
Notatka
W systemie Linux numer strony kodowej to wartość liczbowa określająca zainstalowaną stronę kodu systemu Linux (dostępną od wersji 17.5.1.1).
-i input_file[,input_file2...]
Identyfikuje plik zawierający zestaw instrukcji Transact-SQL lub procedur składowanych. Można określić wiele plików, które są odczytywane i przetwarzane w kolejności. Nie używaj spacji między nazwami plików.
sqlcmd najpierw sprawdza, czy istnieją wszystkie określone pliki. Jeśli co najmniej jeden plik nie istnieje, sqlcmd kończy działanie. Opcje -i
i -Q
/-q
wykluczają się wzajemnie.
Notatka
Jeśli używasz -i
opcji, po której następuje co najmniej jeden dodatkowy parametr, musisz użyć odstępu między parametrem a wartością. Jest to znany problem w sqlcmd (Go).
Przykłady ścieżek:
-i C:\<filename>
-i \\<Server>\<Share$>\<filename>
-i "C:\Some Folder\<file name>"
Ścieżki plików zawierające spacje muszą być ujęte w znaki cudzysłowu.
Tej opcji można użyć więcej niż raz:
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
-o plik_wyjściowy
Identyfikuje plik odbierający dane wyjściowe z sqlcmd.
Jeśli określono -u
, output_file jest przechowywany w formacie Unicode. Jeśli nazwa pliku jest nieprawidłowa, zostanie wygenerowany komunikat o błędzie i sqlcmd kończy działanie.
sqlcmd nie obsługuje współbieżnego zapisywania wielu procesów sqlcmd do tego samego pliku. Dane wyjściowe pliku są uszkodzone lub niepoprawne. Opcja -f
jest również odpowiednia dla formatów plików. Ten plik jest tworzony, jeśli nie istnieje. Plik o tej samej nazwie z poprzedniej sesji sqlcmd jest zastępowany. Określony tutaj plik nie jest plikiem stdout
. Jeśli zostanie określony plik stdout
, ten plik nie jest używany.
Przykłady ścieżek:
-o C:< filename>
-o \\<Server>\<Share$>\<filename>
-o "C:\Some Folder\<file name>"
Ścieżki plików zawierające spacje muszą być ujęte w znaki cudzysłowu.
-r[0 | 1]
Przekierowuje dane wyjściowe komunikatu o błędzie na ekran (stderr
). Jeśli nie określisz parametru lub określisz 0
, przekierowywane są tylko komunikaty o błędach, które mają poziom ważności 11 lub wyższy. Jeśli określisz 1
, wszystkie komunikaty o błędach, w tym PRINT
, są przekierowywane. Ta opcja nie ma wpływu, jeśli używasz -o
. Domyślnie komunikaty są wysyłane do stdout
.
Notatka
W przypadku narzędzia sqlcmd (Go) -r
wymaga argumentu 0
lub 1
.
-R
Dotyczy: ODBC sqlcmd tylko.
Sprawia, że sqlcmd lokalizuje kolumny liczbowe, walutowe, daty i godziny pobrane z programu SQL Server na podstawie ustawień regionalnych klienta. Domyślnie te kolumny są wyświetlane przy użyciu ustawień regionalnych serwera.
Notatka
W systemach Linux i macOS -R
używa obecnie tylko formatowania en_US
(angielski USA).
-u
Określa, że output_file jest przechowywany w formacie Unicode, niezależnie od formatu input_file.
Notatka
W przypadku narzędzia sqlcmd (Go) wygenerowany plik wyjściowy Unicode ma zapisany w nim znacznik kolejności bajtów (BOM) UTF-16 Little-Endian.
Opcje wykonywania zapytań
-e
Zapisuje skrypty wejściowe na standardowym urządzeniu wyjściowym (stdout
).
-Ja
Dotyczy: ODBC sqlcmd tylko.
Ustawia opcję połączenia SET QUOTED_IDENTIFIER
na wartość ON
. Ustawienie domyślne to OFF
. Aby uzyskać więcej informacji, zobacz SET QUOTED_IDENTIFIER.
Notatka
Aby wyłączyć obsługę identyfikatorów ujętych w cudzysłów w narzędziu sqlcmd (Go), dodaj SET QUOTED IDENTIFIER OFF
w swoich skryptach.
-q "zapytanie cmdline"
Wykonuje zapytanie po uruchomieniu polecenia sqlcmd , ale nie kończy polecenia sqlcmd po zakończeniu zapytania. Można wykonywać wiele zapytań rozdzielonych średnikami. Użyj cudzysłowów wokół zapytania, jak pokazano w poniższym przykładzie.
W wierszu polecenia wpisz:
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
Ważny
Nie używaj terminatora GO
w zapytaniu.
Jeśli -b
jest określona razem z tą opcją, sqlcmd kończy działanie po błędzie.
-b
jest opisany w innym miejscu w tym artykule.
-Q "zapytanie w linii poleceń"
Wykonuje zapytanie, gdy sqlcmd jest uruchamiany, a następnie natychmiast kończy działanie sqlcmd. Można wykonywać wiele zapytań rozdzielanych średnikami.
Użyj cudzysłowów wokół zapytania, jak pokazano w poniższym przykładzie.
W wierszu polecenia wpisz:
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
sqlcmd -d AdventureWorks2022 -Q "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE 'Whi%';"
sqlcmd -d AdventureWorks2022 -Q "SELECT TOP 5 FirstName FROM Person.Person;SELECT TOP 5 LastName FROM Person.Person;"
Ważny
Nie używaj terminatora GO
w zapytaniu.
Jeśli -b
jest określona razem z tą opcją, sqlcmd kończy działanie po błędzie.
-b
jest opisany w innym miejscu w tym artykule.
-t limit_czasu_zapytania
Określa liczbę sekund przed upływem limitu czasu polecenia (lub instrukcji Transact-SQL). Ta opcja ustawia zmienną skryptową sqlcmdSQLCMDSTATTIMEOUT
. Jeśli nie określono wartości query_timeout, polecenie nie przekroczy limitu czasu. query_timeout musi być liczbą między 1
a 65534
. Jeśli podana wartość nie jest liczbowa lub nie mieści się w tym zakresie, sqlcmd generuje komunikat o błędzie.
Notatka
Rzeczywista wartość limitu czasu może się różnić od określonej wartości query_timeout o kilka sekund.
-v var = wartość [ var = wartość... ]
Dotyczy: tylko dla Windows. Systemy Linux i macOS nie są obsługiwane.
Tworzy zmienną skryptową sqlcmd, która może być używana w skrypcie sqlcmd.
Jeśli wartość zawiera spacje, należy ująć wartość w cudzysłów. Można określić wiele wartości <var>="<value>"
. Jeśli występują błędy w dowolnej z określonych wartości, sqlcmd generuje komunikat o błędzie, a następnie kończy działanie.
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
sqlcmd -v MyVar1=something MyVar2="some thing"
sqlcmd -v MyVar1=something -v MyVar2="some thing"
-x
Powoduje, że sqlcmd ignoruje zmienne skryptowe. Ten parametr jest przydatny, gdy skrypt zawiera wiele instrukcji INSERT
, które mogą zawierać ciągi, które mają taki sam format jak zmienne regularne, takie jak $(<variable_name>)
.
Opcje formatowania
-h nagłówki
Określa liczbę wierszy do wydrukowania między nagłówkami kolumn. Wartość domyślna to drukowanie nagłówków jednorazowo dla każdego zestawu wyników zapytania. Ta opcja ustawia zmienną skryptową sqlcmdSQLCMDHEADERS
. Użyj -1
, aby określić, że nagłówki nie są drukowane. Każda nieprawidłowa wartość powoduje, że sqlcmd generuje komunikat o błędzie, a następnie kończy pracę.
-k [1 | 2]
Usuwa wszystkie znaki sterujące, takie jak tabulatory i znaki nowej linii z danych wyjściowych. Ten parametr zachowuje formatowanie kolumn po zwracaniu danych.
-
-k
usuwa znaki sterujące. -
-k1
zastępuje każdy znak kontrolki spacją. -
-k2
zastępuje ciągi znaków sterujących pojedynczą spacją.
-s col_separator
Określa znak separatora kolumny. Wartość domyślna to puste miejsce. Ta opcja ustawia zmienną skryptową sqlcmdSQLCMDCOLSEP
. Aby użyć znaków, które mają specjalne znaczenie dla systemu operacyjnego, takich jak ampersand (&
) lub średnik (;
), należy ująć znak w cudzysłów ("
). Separatorem kolumny może być dowolny znak 8-bitowy.
-w screen_width
Określa szerokość ekranu dla danych wyjściowych. Ta opcja ustawia zmienną skryptową sqlcmdSQLCMDCOLWIDTH
. Szerokość kolumny musi być liczbą większą niż 8
i mniejszą niż 65536
. Jeśli określona szerokość kolumny nie mieści się w tym zakresie, sqlcmd generuje komunikat o błędzie. Domyślna szerokość to 80 znaków. Gdy wiersz wyjściowy przekracza określoną szerokość kolumny, opakowuje się do następnego wiersza.
-W
Ta opcja usuwa spacje końcowe z kolumny. Użyj tej opcji razem z opcją -s
podczas przygotowywania danych, które mają zostać wyeksportowane do innej aplikacji. Nie można używać z opcjami -y
ani -Y
.
-y variable_length_type_display_width
Ustawia zmienną skryptową sqlcmdSQLCMDMAXVARTYPEWIDTH
. Wartość domyślna to 256
. Ogranicza liczbę znaków zwracanych dla dużych typów danych o zmiennej długości:
- varchar(max)
- nvarchar(max)
- varbinary(max)
- XML
- zdefiniowane przez użytkownika typy danych (UTT)
- tekst
- tekst
- obrazu
Trasy zdefiniowane przez użytkownika mogą być o stałej długości w zależności od implementacji. Jeśli długość UDT o stałej długości jest krótsza niż display_width, zwracana wartość UDT nie jest zmieniana. Jeśli jednak długość jest dłuższa niż display_width, dane wyjściowe są obcięte.
Ostrożność
-y 0
Użyj opcji z wyjątkową ostrożnością, ponieważ może to powodować znaczne problemy z wydajnością zarówno na serwerze, jak i w sieci, w zależności od rozmiaru zwracanych danych.
-Y wyświetlanie_szerokości_typu_o_stałej_długości
Ustawia zmienną skryptową sqlcmdSQLCMDMAXFIXEDTYPEWIDTH
. Wartość domyślna to 0
(nieograniczona). Ogranicza liczbę znaków zwracanych dla następujących typów danych:
- char(n), gdzie 1 <= n<= 8000
- nchar(n), gdzie 1 <= n<= 4000
- varchar(n), gdzie 1 <= n<= 8000
- nvarchar(n), gdzie 1 <= n<= 4000
- varbinary(n), gdzie 1 <= n<= 4000
- sql_variant
Opcje raportowania błędów
-b
Określa, że sqlcmd kończy działanie i zwraca wartość DOS ERRORLEVEL
po wystąpieniu błędu. Wartość zwrócona do zmiennej ERRORLEVEL
jest 1
, gdy komunikat o błędzie programu SQL Server ma poziom ważności większy niż 10; w przeciwnym razie zwracana wartość jest 0
.
-V
Jeśli opcja jest ustawiona, oprócz -b
polecenia , narzędzie sqlcmd nie zgłasza błędu, jeśli poziom ważności jest niższy niż wartości ustawione przy użyciu polecenia -V
. Pliki wsadowe wiersza komend mogą testować wartość ERRORLEVEL
i odpowiednio zarządzać błędem.
sqlcmd nie zgłasza błędów o poziomie ważności 10 (komunikaty informacyjne).
Jeśli skrypt sqlcmd zawiera niepoprawny komentarz, błąd składniowy lub brakuje zmiennej skryptowej, zwracana ERRORLEVEL
jest 1
.
-m poziom_błędu
Określa, które komunikaty o błędach są wysyłane do stdout
. Wysyłane są komunikaty o poziomie ważności większym lub równym temu poziomowi. Po ustawieniu tej wartości na -1
są wysyłane wszystkie komunikaty, w tym komunikaty informacyjne. Spacje nie są dozwolone między -m
a -1
. Na przykład -m-1
jest prawidłowa, a -m -1
nie.
Ta opcja ustawia również zmienną skryptów sqlcmdSQLCMDERRORLEVEL
. Ta zmienna ma wartość domyślną 0
.
-V poziom_nasilenia błędu
Określa poziom surowości używany do ustawienia zmiennej ERRORLEVEL
. Komunikaty o błędach z poziomami ważności większymi lub równymi wartościom z zestawu ERRORLEVEL
. Wartości mniejsze niż 0 są zgłaszane jako 0
. Pliki usługi Batch i CMD mogą służyć do testowania wartości zmiennej ERRORLEVEL
.
Różne opcje
-a rozmiar_pakietu
Żąda pakietu o innym rozmiarze. Ta opcja ustawia zmienną skryptową sqlcmdSQLCMDPACKETSIZE
.
packet_size musi być wartością z zakresu 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 Transact-SQL między GO
poleceniami. Możesz zażądać większego rozmiaru pakietu. Jeśli jednak żądanie zostanie odrzucone, sqlcmd używa domyślnego serwera dla rozmiaru pakietu.
-c zakończenie_partii
Określa, jaki terminator wsadowy ma być użyty. Domyślnie polecenia są zakończone i wysyłane do SQL Server przez wpisanie słowa GO
na osobnej linii. Podczas resetowania terminatora wsadowego nie używaj zastrzeżonych słów kluczowych Transact-SQL ani znaków, które mają specjalne znaczenie dla systemu operacyjnego, nawet jeśli są poprzedzone ukośnikiem odwrotnym.
-L[c]
Dotyczy: tylko dla Windows. Systemy Linux i macOS nie są obsługiwane.
Wyświetla listę komputerów serwera skonfigurowanych lokalnie oraz nazwy komputerów serwera, które nadają w sieci. Tego parametru nie można używać w połączeniu z innymi parametrami. Maksymalna liczba komputerów serwera, które można wymienić, to 3000. Jeśli lista serwerów zostanie obcięta z powodu rozmiaru buforu, zostanie wyświetlony komunikat ostrzegawczy.
Notatka
Ze względu na charakter emisji w sieciach sqlcmd może nie odbierać terminowej odpowiedzi ze wszystkich serwerów. W związku z tym lista zwracanych serwerów może się różnić w przypadku każdego wywołania tej opcji.
Jeśli określono opcjonalny parametr c
, dane wyjściowe będą wyświetlane bez wiersza nagłówka Servers:
, a każdy wiersz serwera jest wyświetlany bez spacji wiodących. Ta prezentacja jest nazywana czystymi danymi wyjściowymi. Czyste dane wyjściowe zwiększają wydajność przetwarzania języków skryptów.
-p[1]
Drukuje statystyki wydajności dla każdego zestawu wyników. Poniżej przedstawiono przykład formatu 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 przetwarzanych przez program SQL Server. -
t1
= łączny 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 rozdzielanym dwukropkiem, który można łatwo zaimportować do arkusza kalkulacyjnego lub przetworzyć przez skrypt.
Jeśli opcjonalny parametr jest dowolną wartością inną niż 1
, zostanie wygenerowany błąd i sqlcmd kończy działanie.
-X[1]
Wyłącza polecenia, które mogą naruszyć bezpieczeństwo systemu podczas wykonywania sqlcmd z pliku wsadowego. Wyłączone polecenia są nadal rozpoznawane; sqlcmd wyświetla komunikat ostrzegawczy i kontynuuje. Jeśli określono opcjonalny parametr 1
, sqlcmd generuje komunikat o błędzie, a następnie kończy działanie. Następujące polecenia są wyłączone, gdy jest używana opcja -X
:
ED
-
!!
polecenie
Jeśli określono opcję -X
, uniemożliwia przekazywanie zmiennych środowiskowych do sqlcmd. Zapobiega to również wykonywaniu skryptu uruchamiania określonego przy użyciu zmiennej skryptowej SQLCMDINI
. Aby uzyskać więcej informacji na temat zmiennych skryptowych sqlcmd, proszę zobaczyć sqlcmd — użycie ze zmiennymi skryptowymi.
-?
Przedstawia wersję sqlcmd oraz podsumowanie składni opcji sqlcmd.
Notatka
W systemie macOS zamiast tego uruchom sqlcmd '-?'
(z cudzysłowami).
Uwagi
Opcje nie muszą być używane w kolejności wyświetlanej w sekcji składni.
Notatka
Jeśli używasz -i
opcji, po której następuje co najmniej jeden dodatkowy parametr, musisz użyć odstępu między parametrem a wartością. Jest to znany problem w sqlcmd (Go).
Gdy zostanie zwróconych wiele wyników, sqlcmd wyświetla pusty wiersz między każdym zestawem wyników w partii. Ponadto komunikat <x> rows affected
nie jest wyświetlany, gdy nie ma zastosowania do wykonanej instrukcji.
Aby użyć sqlcmd interaktywnie, wpisz sqlcmd
w wierszu polecenia przy użyciu dowolnej lub kilku opcji opisanych wcześniej w tym artykule. Aby uzyskać więcej informacji, zobacz Use sqlcmd (Używanie narzędzia sqlcmd).
Notatka
Opcje -l
, -Q
, -Z
lub -i
powodują, że po wykonaniu sqlcmd kończy działanie.
Łączna długość sqlcmd wiersza polecenia w środowisku poleceń (na przykład cmd.exe
lub bash
), w tym wszystkie argumenty i rozszerzone zmienne, jest określana przez podstawowy system operacyjny.
Obsługa DSN w sqlcmd i bcp
Jeśli określisz , możesz podać nazwę źródła danych (DSN) zamiast nazwy serwera w poleceniu bcp -S
lub w opcji sqlcmd :Connect
(lub poleceniu -D
).
-D
polecenie sqlcmd lub bcp umożliwia nawiązanie połączenia z serwerem określonym w nazwach DSN przez -S
opcję .
Nazwy DSN systemu są przechowywane w odbc.ini
pliku w katalogu ODBC SysConfigDir
(/etc/odbc.ini
w standardowych instalacjach). Nazwy DSN użytkowników są przechowywane w .odbc.ini
katalogu głównym użytkownika (~/.odbc.ini
).
W systemach Windows nazwy DSN systemu i użytkowników są przechowywane w rejestrze i zarządzane za pośrednictwem usługi odbcad32.exe
.
Narzędzia bcp i sqlcmd nie obsługują nazw DSN plików.
Aby uzyskać listę wpisów, które obsługuje sterownik, zobacz nazwy DSN i parametry połączenia oraz atrybuty .
W nazwie DSN wymagany jest tylko DRIVER
wpis, ale aby nawiązać połączenie z serwerem zdalnym, narzędzie sqlcmd lub bcp wymaga wartości w elemecie SERVER
.
SERVER
Jeśli element jest pusty lub nie istnieje w nazwie DSN, sqlcmd i bcp spróbuj nawiązać połączenie z wystąpieniem domyślnym w systemie lokalnym.
W przypadku korzystania z narzędzia bcp w systemach Windows program SQL Server 2017 (14.x) i starsze wersje wymagają sterownika SQL Native Client 11 (sqlncli11.dll
), podczas gdy program SQL Server 2019 (15.x) i nowsze wersje wymagają sterownika Microsoft ODBC Driver 17 dla sterownika programu SQL Server (msodbcsql17.dll
).
Jeśli ta sama opcja jest określona zarówno w nazwie DSN, jak i w wierszu polecenia sqlcmd lub bcp , opcja wiersza polecenia zastępuje wartość używaną w nazwie DSN. Jeśli na przykład nazwa DSN zawiera DATABASE
wpis, a wiersz polecenia sqlcmd zawiera -d
wartość przekazaną do -d
, jest używana. Jeśli Trusted_Connection=yes
określono w nazwie DSN, jest używane uwierzytelnianie Kerberos; nazwa użytkownika (-U
) i hasło (-P
), jeśli podano, są ignorowane.
Istniejące skrypty, które wywołują isql
, można zmodyfikować tak, aby używały polecenia sqlcmd , definiując następujący alias: alias isql="sqlcmd -D"
.
najlepsze rozwiązania dotyczące narzędzia sqlcmd
Skorzystaj z poniższych rozwiązań, aby zmaksymalizować bezpieczeństwo i wydajność.
Użyj zintegrowanych zabezpieczeń.
Użyj
-X[1]
w środowiskach zautomatyzowanych.Zabezpieczanie plików wejściowych i wyjściowych przy użyciu odpowiednich uprawnień systemu plików.
Aby zwiększyć wydajność, wykonaj tyle, ile to możliwe, w jednej sesji sqlcmd, zamiast w serii sesji.
Ustaw wartości limitu czasu dla wykonywania wsadowego lub zapytania na wyższe niż przewidujesz, że zajmie wykonanie partii lub zapytania.
Skorzystaj z poniższych rozwiązań, aby zmaksymalizować poprawność:
Użyj
-V 16
, aby rejestrować komunikaty o poziomie ważności 16, oznaczone jako . Komunikaty poziomu ważności 16 wskazują ogólne błędy, które mogą zostać skorygowane przez użytkownika.Sprawdź kod zakończenia i
DOS ERRORLEVEL
zmienną po zakończeniu procesu. sqlcmd zwraca zwykle0
, w przeciwnym razie ustawiaERRORLEVEL
zgodnie z konfiguracją-V
. Innymi słowy,ERRORLEVEL
nie należy oczekiwać, że będą miały tę samą wartość co numer błędu zgłaszany przez SQL Server. Numer błędu to wartość specyficzna dla programu SQL Server odpowiadająca @@ERROR funkcji systemowej.ERRORLEVEL
jest wartością sqlcmd specyficzną dla, aby wskazać, dlaczego sqlcmd zakończyło się, a jej wartość zależy od określenia argumentu wiersza poleceń-b
.
Używanie -V 16
w połączeniu ze sprawdzaniem kodu zakończenia i DOS ERRORLEVEL
może pomóc w wychwytywaniu błędów w zautomatyzowanych środowiskach, szczególnie na poziomie bram jakości przed wydaniem produkcyjnym.
Powiązana zawartość
- Sprawdzanie zainstalowanej wersji narzędzia sqlcmd
- Pobieranie i instalowanie narzędzia sqlcmd
- Polecenia w narzędziu sqlcmd
- Używanie narzędzia sqlcmd ze zmiennymi skryptowymi
- Szybki start: uruchamianie obrazów kontenerów programu SQL Server z systemem Linux za pomocą Docker
- Uruchamianie narzędzia sqlcmd
- Wykonywanie języka T-SQL z pliku skryptu za pomocą polecenia sqlcmd
- Korzystanie z narzędzia sqlcmd
- Nawiązywanie połączenia z programem SQL Server za pomocą narzędzia sqlcmd
- edytowanie skryptów SQLCMD za pomocą edytora zapytań
- Utwórz Krok Zadania CmdExec