Megosztás:


sqlcmd segédprogram

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Az sqlcmd segédprogrammal különböző módokon adhat meg Transact-SQL utasításokat, rendszereljárásokat és szkriptfájlokat:

  • A parancssorban.
  • LekérdezésszerkesztőbenSQLCMD módban.
  • Windows-szkriptfájlban.
  • Egy SQL Server Agent-feladat operációs rendszerbeli (cmd.exe) feladatlépésében.

Note

Bár a Microsoft Entra ID az Azure Active Directory (Azure AD) új neve, a meglévő környezetek megzavarásának megakadályozása érdekében az Azure AD továbbra is megmarad néhány rögzített elemben, például felhasználói felületi mezőkben, kapcsolatszolgáltatókban, hibakódokban és parancsmagokban. Ebben a cikkben a két név felcserélhető.

sqlcmd-variánsok

Az sqlcmd két változata létezik:

  • sqlcmd (Go): A go-mssqldb-alapú sqlcmd, néha go-sqlcmd néven. Ez a verzió egy önálló eszköz, amelyet az SQL Servertől függetlenül tölthet le. Windowson, macOS-en, Linuxon és tárolókban fut.

  • sqlcmd (ODBC): A platformhoz igazított, ODBC-alapú sqlcmd, amely az SQL Serverrel vagy a Microsoft parancssori segédprogramokkal érhető el, és a mssql-tools csomag egy része Linuxon. Windowson, macOS-en, Linuxon és tárolókban is fut.

Ha meg szeretné tudni, hogy az sqlcmd melyik változata és verziója van telepítve a rendszeren, tekintse meg az sqlcmd segédprogram telepített verziójának ellenőrzését.

Az sqlcmd beszerzéséről további információt az sqlcmd segédprogram letöltése és telepítése című témakörben talál.

TDS 8.0-támogatás

Az SQL Server 2025 (17.x) TDS 8.0-s támogatást nyújt az sqlcmd segédprogramhoz.

Syntax

Ebben a cikkben az opció, a paraméter, a parancssori argumentum és a kapcsoló felcserélhető.

Az sqlcmd (Go) két súgómóddal rendelkezik: --help modern alparancsokhoz és -? ODBC-kompatibilis jelzőkhöz.

Modern parancsok (--help)

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.

ODBC-kompatibilis jelzők (-?)

sqlcmd
   -a packet_size
   -A (dedicated administrator connection)
   -b (terminate batch job if there is an error)
   -c batch_terminator
   -C (trust the server certificate)
   -d db_name
   -e (echo input)
   -E (use trusted connection)
   -F hostname_in_certificate
   -g (enable column encryption)
   -G (use Azure Active Directory for authentication)
   -h rows_per_header
   -H workstation_name
   -i input_file
   -I (enable quoted identifiers, always on)
   -k[1 | 2] (remove or replace control characters)
   -K application_intent
   -l login_timeout
   -L[c] (list servers, optional clean output)
   -m error_level
   -M multisubnet_failover (always enabled)
   -N[s|m|o] (encrypt connection)
   -o output_file
   -P password
   -q "cmdline query"
   -Q "cmdline query" (and exit)
   -r[0 | 1] (msgs to stderr)
   -R (ignored, client regional settings not used)
   -s col_separator
   -S [protocol:]server[instance_name][,port]
   -t query_timeout
   -u (unicode output file)
   -U login_id
   -v var = "value"
   -V error_severity_level
   -w screen_width
   -W (remove trailing spaces)
   -x (disable variable substitution)
   -X[1] (disable commands, startup script, environment variables, optional exit)
   -y variable_length_type_display_width
   -Y fixed_length_type_display_width
   -z new_password
   -Z new_password (and exit)
   --authentication-method (Azure SQL authentication method)
   --driver-logging-level (mssql driver log level)
   --vertical (print results in vertical format)
   -? (usage)

Az sqlcmd (ODBC) jelentős változásai

Az sqlcmd (Go) segédprogramban számos kapcsoló és viselkedés eltérő. A legfrissebb hiányzó zászlók listájához a visszamenőleges kompatibilitás érdekében lásd a Vissza-kompatibilitási zászlók megvalósításának prioritása GitHub-beszélgetést.

  • Az sqlcmd (Go) támogatja a kapcsolót -P . Az SQL Server-hitelesítéshez az alábbi mechanizmusokon keresztül adhat meg jelszavakat:

    • A -P parancssori kapcsoló
    • A SQLCMDPASSWORD környezeti változó
    • A :CONNECT parancs
    • Amikor a rendszer kéri, írja be a jelszót a kapcsolat befejezéséhez
  • A -r kapcsolóhoz szükség van egy 0 vagy 1 argumentumra.

  • A -R kapcsoló figyelmen kívül lesz hagyva. A Go-futtatókörnyezet nem biztosít hozzáférést a felhasználói területi adatokhoz.

  • A -I kapcsoló figyelmen kívül lesz hagyva. Az idézett azonosítók mindig engedélyezve vannak. Az idézett azonosító viselkedésének letiltásához adjon hozzá SET QUOTED IDENTIFIER OFF-et a szkriptekhez.

  • A -M kapcsoló figyelmen kívül lesz hagyva. Az sqlcmd (Go) mindig engedélyezi a több alhálózatos feladatátvételt.

  • A -N karakterlánc értéke adja meg a titkosítási választást, amely az s[trict]egyik ,t[rue]/m[andatory]/yes/1o[ptional]/no/0/f[alse] vagy .disable

    • Ha nem adja meg -N és -C, az sqlcmd a kiszolgálóval való hitelesítést a tanúsítvány érvényesítése nélkül egyezteti.
    • Ha megadja -N , de nem -C, az sqlcmd megköveteli a kiszolgálótanúsítvány érvényesítését. A titkosítás false értéke továbbra is a bejelentkezési csomag titkosításához vezethet.
    • Ha mind a -N-t, mind a -C-et megadja, az sqlcmd az értékeiket használja a titkosítási egyeztetéshez.
    • Az ügyfél-/kiszolgálótitkosítási egyeztetésről további információt MS-TDS PRELOGIN című témakörben talál.

    Important

    Az SQL Server 2025 (17.x) esetében a -N lehet o (a optional esetén), m (az alapértelmezett mandatory esetén) vagy s (a strict esetén). Ha nem adja meg -N, akkor -Nm lesz az alapértelmezett (a mandatory esetében). Ez a viselkedés az SQL Server 2022 (16.x) és a korábbi verziók közötti kompatibilitástörő változás.

  • A -u kapcsolóval az előállított Unicode kimeneti fájl az UTF-16 kis-endian byte-order markkal (BOM) van előtagolva.

  • Bizonyos viselkedések, amelyekkel a kompatibilitás OSQL fenntartása érdekében tartottak, módosulhattak, például egyes adattípusok oszlopfejléceinek igazítása.

  • Minden parancsnak el kell férnie egy sorban, még EXITis. Az interaktív mód nem ellenőrzi a parancsok nyitott zárójeleit vagy idézőjeleit, és nem kéri az egymást követő sorokat. Ez a viselkedés eltér az ODBC-verziótól, ami lehetővé teszi, hogy a lekérdezés EXIT(query) több sorra is kiterjedjen.

Az sqlcmd (Go) támogatja a megosztott memóriát, a nevesített csöveket és a TCP-átvitelt. Protokoll kényszerítéséhez használja a kiszolgáló nevének megfelelő protokollelőtagot:

  • lpc megosztott memória esetén (csak localhost)
  • np nevesített csövek esetén, vagy használja az UNC névvel ellátott cső elérési útját kiszolgálónévként
  • tcp TCP esetén

Ha nem ad meg protokollt, az sqlcmd a következő sorrendben próbál tárcsázni: lpc>np>tcp. Távoli gazdagéphez lpc való csatlakozáskor az ki van hagyva.

Enhancements

  • :Connectválasztható -G paramétert használ az Azure SQL Database egyik hitelesítési módszerének kiválasztásához : SqlAuthentication, ActiveDirectoryDefault, ActiveDirectoryIntegrated, ActiveDirectoryServicePrincipal, ActiveDirectoryManagedIdentityActiveDirectoryPassword. További információ: Hitelesítés a Microsoft Entra-azonosítóval az sqlcmd-ben. Ha -G nincs megadva, a rendszer integrált biztonságot vagy SQL Server-hitelesítést használ egy -U felhasználóneves paraméter meglététől függően.

  • A --driver-logging-level parancssori paraméter lehetővé teszi a nyomkövetések megtekintését az go-mssqldb illesztőprogramból. A 64 használatával tekintse meg az összes nyomot.

  • Az sqlcmd (Go) függőleges formátumban tudja kinyomtatni az eredményeket. Állítsa be a --vertical parancssori kapcsolót. A SQLCMDFORMAT szkriptelési változó is szabályozza azt.

Parancssori opciók

Az alábbi táblázat az sqlcmdben elérhető parancssori beállításokat és az általuk támogatott operációs rendszereket sorolja fel.

Parancssori lehetőség Windows rendszeren támogatott Linux és macOS rendszeren támogatott
Bejelentkezéssel kapcsolatos beállítások
-A Yes No
-C Yes Yes
-d db_name Yes Yes
-D Yes Yes
-l login_timeout Yes Yes
-E Yes Yes
-F hostname_in_certificate Yes Yes
-g Yes Yes
-G Yes Yes
-H workstation_name Yes Yes
-j Yes Yes
-J server_certificate No Yes
-K application_intent Yes Yes
-M multisubnet_failover Yes Yes
-N[s|m|o] Yes Yes
-P jelszó Yes Yes
-S [protokoll:]kiszolgáló[\instance_name][,port] Yes Yes
-U login_id Yes Yes
-z new_password Yes Yes
-Z new_password Yes Yes
Bemeneti/kimeneti beállítások
-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage] Yes Yes
-i input_file[,input_file2...] Yes Yes
-o output_file Yes Yes
-r[0 | 1] Yes Yes
-R Yes Yes
-u Yes Yes
Lekérdezés-végrehajtási beállítások
-e Yes Yes
-I Yes Yes
-q "cmdline query" Yes Yes
-Q "cmdline query" Yes Yes
-t query_timeout Yes Yes
-v var = érték [ var = érték... ] Yes No
-x Yes Yes
Formázási beállítások
-h fejlécek Yes Yes
-k [1 | 2] Yes Yes
-s oszlop_elválasztó Yes Yes
-w screen_width Yes Yes
-W Yes Yes
-y variable_length_type_display_width Yes Yes
-Y fixed_length_type_display_width Yes Yes
Hibajelentési lehetőségek
-b Yes Yes
-m error_level Yes Yes
-V hiba_súlyossági_szint Yes Yes
Egyéb beállítások
-a csomag_méret Yes Yes
-c batch_terminator Yes Yes
-L[c] Yes No
-p[1] Yes Yes
-X[1] Yes Yes
-? Yes Yes

-A

Csak a Windowsra vonatkozik. A Linux és a macOS nem támogatott.

Dedikált rendszergazdai kapcsolattal (DAC) jelentkezik be az SQL Serverre. Az ilyen típusú kapcsolatokkal elháríthatóak a kiszolgáló hibái. Ez a kapcsolat csak a DAC-t támogató kiszolgálószámítógépekkel működik. Ha a DAC nem érhető el, sqlcmd hibaüzenetet generál, majd kilép. További információ a DAC-ról: Diagnosztikai kapcsolat adatbázis-rendszergazdák számára. A -A beállítás nem támogatott a -G beállítással. Amikor az Azure SQL Database-hez csatlakozik -A használatával, adminisztrátornak kell lennie a logikai SQL kiszolgálón. A DAC nem érhető el a Microsoft Entra rendszergazdái számára.

Note

A dedikált rendszergazdai kapcsolat (DAC) macOS vagy Linux rendszeren történő létrehozásának módjáról a programozási útmutatóban olvashat.

-C

Ezzel a beállítással úgy konfigurálhatja az ügyfelet, hogy a kiszolgáló tanúsítványában ellenőrzés nélkül implicit módon megbízzon. Ez a beállítás egyenértékű a ADO.NET TRUSTSERVERCERTIFICATE = truebeállítással.

Az sqlcmd (Go) segédprogramra a következő feltételek vonatkoznak:

  • Ha nem adja meg -N, és -C, az sqlcmd a kiszolgálótanúsítvány érvényesítése nélkül tárgyalja meg a hitelesítést a kiszolgálóval.
  • Ha megadja -N , de nem -C, az sqlcmd megköveteli a kiszolgálótanúsítvány érvényesítését. A titkosítás false értéke továbbra is a bejelentkezési csomag titkosításához vezethet.
  • Ha mind a -N, mind az -C paramétert megadja, az sqlcmd a titkosítási egyeztetéshez használja az értékeiket.

-d db_name

Az sqlcmd USE <db_name>indításakor egy utasítást ad ki. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDDBNAME. Ez a paraméter a kezdeti adatbázist adja meg. Az alapértelmezett a bejelentkezéshez tartozó alapértelmezett adatbázis tulajdonsága. Ha az adatbázis nem létezik, hibaüzenet jelenik meg, és sqlcmd kilép.

-D

A -S számára megadott kiszolgálónevet gazdanév helyett DSN-ként értelmezi. További információ: DSN-támogatás az sqlcmd és a bcp esetében.

Note

A -D lehetőség csak Linux és macOS rendszerű ügyfeleken érhető el. Windows klienseken egy elavult opcióra hivatkozik, amely eltávolításra került, és így figyelmen kívül hagyásra kerül.

-l bejelentkezési_időkorlát

Megadja, hogy hány másodperc telik el, mielőtt időtúllépés történik az sqlcmd ODBC-illesztőhöz való bejelentkezéskor, amikor megpróbál csatlakozni egy kiszolgálóhoz. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDLOGINTIMEOUT. Az alapértelmezett időtúllépés az sqlcmd bejelentkezésnél 8 másodperc. Ha az Azure SQL Database-hez vagy az -G Azure Synapse Analyticshez való csatlakozást és a Microsoft Entra-azonosítóval való hitelesítést választja, legalább 30 másodperces időtúllépési érték ajánlott. A bejelentkezési időtúllépésnek egy 0 és 65534 közötti számnak kell lennie. Ha az érték nem numerikus, vagy nem ebbe a tartományba esik, az sqlcmd hibaüzenetet hoz létre. A 0 értéke azt határozza meg, hogy az időtúllépés végtelen legyen.

-E

Megbízható kapcsolatot használ a felhasználónév és jelszó használata helyett az SQL Serverre való bejelentkezéshez. Alapértelmezés szerint -E megadása nélkül sqlcmd a megbízható kapcsolati lehetőséget használja.

A -E beállítás figyelmen kívül hagyja a felhasználónév és a jelszó környezeti változójának lehetséges beállításait, például a SQLCMDPASSWORD. Ha a -E beállítást a -U vagy a -P beállítással együtt használja, hibaüzenet jelenik meg.

Note

Az integrált hitelesítést linuxos vagy macOS-ügyfélről használó megbízható kapcsolatok létesítéséről további információt az Integrált hitelesítés használata című témakörben talál.

-F hostname_in_certificate

Egy másik, várt köznapi nevet (CN) vagy tulajdonosi alternatív nevet (SAN) ad meg a kiszolgálótanúsítványban, amelyet a kiszolgálótanúsítvány érvényesítése során használni szeretne. E beállítás nélkül a tanúsítvány érvényesítése biztosítja, hogy a tanúsítvány cn vagy SAN értéke megegyezik a kiszolgáló nevével, amelyhez csatlakozik. Ezt a paramétert akkor használhatja, ha a kiszolgáló neve nem felel meg a CN-nek vagy a SAN-nak, például DNS-aliasok használatakor.

Például:

sqlcmd -S server01 -Q "SELECT TOP 100 * FROM WideWorldImporters.Sales.Orders" -A -Ns -F server01.adventure-works.com

Note

Az sqlcmd (Go) a kiszolgálótanúsítványban a gazdagépnevének megadására is használja a -F -t. Ha függőleges formátumban szeretné kinyomtatni az eredményeket, akkor az sqlcmd (Go) a --vertical kapcsolót használja.

-g

Az oszloptitkosítás beállítása Enabled-ra. További információ: Always Encrypted. Csak a Windows tanúsítványtárolóban tárolt főkulcsok támogatottak. A -g beállításhoz legalább sqlcmd13.1-esverzió szükséges. A verzió meghatározásához futtassa a következőt sqlcmd -?: .

-G

Ezzel a beállítással hitelesítheti a Microsoft Entrát az Azure SQL Database-hez vagy az Azure Synapse Analyticshez való csatlakozáskor. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDUSEAAD = true. A -G beállításhoz legalább sqlcmd13.1-esverzió szükséges. A verzió meghatározásához futtassa a következőt sqlcmd -?: . További információ: Microsoft Entra-hitelesítés az Azure SQL-hez. A -A beállítás nem támogatott a -G beállítással.

A -G lehetőség csak az Azure SQL Database-re és az Azure Synapse Analyticsre vonatkozik.

A Microsoft Entra interaktív hitelesítése jelenleg nem támogatott Linux vagy macOS rendszeren. A Microsoft Entra integrált hitelesítéséhez az SQL Server 17.6.1-es vagy újabb verziójához és egy megfelelően konfigurált Kerberos-környezethezszükséges az ODBC-illesztőprogram letöltése.

A Microsoft Entra-hitelesítéssel kapcsolatos további információkért lásd: Hitelesítés a Microsoft Entra-azonosítóval az sqlcmd-ben.

-H workstation_name

Egy munkaállomás neve. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDWORKSTATION. A munkaállomás neve megjelenik a hostname katalógusnézet oszlopában sys.sysprocesses , és a sp_who tárolt eljárással adható vissza. Ha nem adja meg ezt a beállítást, az alapértelmezett beállítás az aktuális számítógépnév. Ezzel a névvel azonosíthatja a különböző sqlcmd-munkameneteket .

-j

Nyers hibaüzeneteket jelenít meg a képernyőn.

-J szerver_tanúsítvány

A következőkre vonatkozik: sqlcmd (ODBC), Linux és macOS. A Windows nem támogatott.

Egy kiszolgálótanúsítványfájl elérési útját adja meg. Ez a fájl megfelel a kiszolgáló kapcsolattitkosítási tanúsítványának. Az egyezés a szabványos tanúsítványérvényesítés (lejárat, állomásnév, megbízhatósági lánc stb.) helyett történik. Az elfogadott tanúsítványformátumok a PEM, a DER és a CER.

Ezt a lehetőséget akkor használja, ha olyan kiszolgálókhoz csatlakozik, amelyek önaláírt tanúsítványokat vagy tanúsítványokat használnak, amelyeket egy magántanúsítvány-szolgáltató állít ki. Ha a titkosítás engedélyezve van, és a tanúsítvány érvényesítése meghiúsul, a kapcsolat meghiúsul.

Például:

sqlcmd -S server01 -Q "SELECT TOP 100 * FROM WideWorldImporters.Sales.Orders" -A -Ns -J /etc/ssl/certs/server_certificate.cer

-K alkalmazás_szándék

Deklarálja az alkalmazás számítási feladatainak típusát a kiszolgálóhoz való csatlakozáskor. Az egyetlen jelenleg támogatott érték a ReadOnly. Ha nem adja meg -K, az sqlcmd nem támogatja a másodlagos replikához való kapcsolódást egy rendelkezésre állási csoportban. További információért lásd: Írásvédett számítási feladatok kiszervezése egy Always On rendelkezésre állási csoport másodlagos replikájára.

Note

-K A SUSE Linux Enterprise Server (SLES) nem támogatja. Az ApplicationIntent=ReadOnly átadott DSN-fájlban azonban megadhatja a kulcsszót. További információért lásd a cikk későbbi részében az sqlcmd és a bcp DSN-támogatását.

További információ: Magas rendelkezésre állás és vészhelyreállítás Linux és macOS rendszeren.

-M multisubnet_failover

A -M paramétert mindig adja meg, amikor csatlakozik egy SQL Server rendelkezésre állási csoport figyelőjéhez vagy egy SQL Server feladatátvételi fürt példányához. -M gyorsabb észlelést és kapcsolatot biztosít az (jelenleg) aktív kiszolgálóval. Ha nem adja meg -M, -M ki van kapcsolva.

További információkért lásd:

Note

-M A SUSE Linux Enterprise Server (SLES) nem támogatja. Az MultiSubnetFailover=Yes átadott DSN-fájlban azonban megadhatja a kulcsszót. További információért lásd a cikk későbbi részében az sqlcmd és a bcp DSN-támogatását.

További információ: Magas rendelkezésre állás és vészhelyreállítás Linux és macOS rendszeren.

-N[s|m|o]

Az ügyfél ezzel a beállítással titkosított kapcsolatot kér.

A -N kapcsoló lehet o (a optional), m (az mandatory alapértelmezett), vagy s (a strict számára). Ha nem tartalmazza -N, az alapértelmezett érték -Nm (a következőhöz mandatory). Ez az alapértelmezett érték jelentős változást jelent az SQL Server 2022 (16.x) és a korábbi verziókhoz képest, mivel az alapértelmezett érték -No.

Az sqlcmd (Go) segédprogramhoz egy sztringértéket kell megadnia, ami lehet -N, true vagy false, hogy ezáltal meghatározza a titkosítási lehetőséget. (default ugyanaz, mint a paraméter kihagyása):

  • Ha nem adja meg -N és -C, az sqlcmd a kiszolgálóval való hitelesítést a tanúsítvány érvényesítése nélkül egyezteti.

  • Ha megadja -N , de nem -C, az sqlcmd megköveteli a kiszolgálótanúsítvány érvényesítését. A titkosítás false értéke továbbra is a bejelentkezési csomag titkosításához vezethet.

  • Ha mind a -N-t, mind a -C-et megadja, az sqlcmd az értékeiket használja a titkosítási egyeztetéshez.

-P jelszó

Felhasználó által megadott jelszó. A jelszavak megkülönböztetik a kis- és nagybetűket. Ha ezt a -U lehetőséget használja, de nem használja a -P beállítást, vagy nem állítja be a SQLCMDPASSWORD környezeti változót, az sqlcmd jelszót kér a felhasználótól. Ne használjon null (üres) jelszót, de megadhatja a null jelszót úgy, hogy egy pár összefüggő idézőjelet használ a paraméter értékének megadásakor ("").

Important

A használat -P nem biztonságos. Ne adja meg a jelszót a parancssorban. Másik lehetőségként használja a SQLCMDPASSWORD környezeti változót, vagy interaktívan adja meg a jelszót a -P lehetőség kihagyásával.

Használjon erős jelszót.

A jelszókérés a következő módon jelenik meg a konzolra való nyomtatással: Password:

A felhasználói bevitel el van rejtve. Ez azt jelenti, hogy semmi sem jelenik meg, és a kurzor a helyén marad.

A SQLCMDPASSWORD környezeti változó lehetővé teszi az aktuális munkamenet alapértelmezett jelszavának beállítását. Ezért a jelszavakat nem kell keményen kötegelt fájlokba kódolni. Az alábbi példa először beállítja a SQLCMDPASSWORD változót a parancssorban, majd hozzáfér az sqlcmd segédprogramhoz.

Írja be a következő parancsot a parancssorba. Cserélje le a <password> érvényes jelszóra.

SET SQLCMDPASSWORD=<password>
sqlcmd
SET SQLCMDPASSWORD=<password>
sqlcmd
SET SQLCMDPASSWORD=<password>
sqlcmd

Ha a felhasználónév és a jelszó kombinációja helytelen, hibaüzenet jelenik meg.

Note

A OSQLPASSWORD környezeti változó megmarad a visszamenőleges kompatibilitás érdekében. A SQLCMDPASSWORD környezeti változó elsőbbséget élvez a OSQLPASSWORD környezeti változóval szemben. Ez azt jelenti, hogy sqlcmd és osql interferencia nélkül használhatók egymás mellett. A régi szkriptek továbbra is működnek.

Ha a -P lehetőséget a -E lehetőséggel együtt használja, hibaüzenet jelenik meg.

Ha egynél több argumentummal használja a -P beállítást, hibaüzenet jelenik meg, és a program kilép.

A speciális karaktereket tartalmazó jelszó hibaüzenetet hozhat létre. A speciális karaktereket el kell kerülni, amikor a -P-t használja, vagy inkább a SQLCMDPASSWORD környezeti változót kell használnia.

Linuxon és macOS rendszeren, ha a -G beállítás nélkül -Uvan használva, -P egy hozzáférési jogkivonatot tartalmazó fájlt (v17.8+) ad meg. A jogkivonatfájlnak UTF-16LE (nincs BOM) formátumúnak kell lennie.

A hozzáférési jogkivonatok különböző módszerekkel szerezhetők be. Meg kell győződnie arról, hogy a hozzáférési jogkivonat bájtról bájtra helyes, mert ezt as-isküldi el. Az alábbi példaparancs egy hozzáférési jogkivonatot szerez be. A parancs az Azure CLI- és Linux-parancsokat használja, és a megfelelő formátumban menti azt egy fájlba. Ha a rendszer vagy a terminál alapértelmezett kódolása nem ASCII vagy UTF-8, előfordulhat, hogy módosítania kell a iconv beállításait. Ügyeljen arra, hogy gondosan biztosítsa az eredményül kapott fájlt, és törölje, ha már nincs rá szükség.

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 [protokoll:]kiszolgáló[\instance_name][,port]

Megadja az SQL Server azon példányát, amelyhez csatlakozni szeretne. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDSERVER.

Adja meg a server_name az SQL Server alapértelmezett példányához való csatlakozáshoz az adott kiszolgálószámítógépen. Adja meg server_name[\instance_name] parancsot az SQL Server egy nevesített példányához való csatlakozáshoz a kiszolgálón. Ha nem ad meg kiszolgálószámítógépet, az sqlcmd a helyi számítógépen található SQL Server alapértelmezett példányához csatlakozik. Erre a beállításra akkor van szükség, ha távoli számítógépről futtatja az sqlcmd parancsot a hálózaton.

protokoll lehet tcp (TCP/IP), lpc (megosztott memória) vagy np (elnevezett csövek).

Ha nem ad meg server_name[\instance_name] értéket az sqlcmd indításakor, az SQL Server a SQLCMDSERVER környezeti változót ellenőrzi és használja.

Note

A OSQLSERVER környezeti változó megmarad a visszamenőleges kompatibilitás érdekében. A SQLCMDSERVER környezeti változó elsőbbséget élvez a OSQLSERVER környezeti változóval szemben. Ez azt jelenti, hogy sqlcmd és osql interferencia nélkül használhatók egymás mellett. A régi szkriptek továbbra is működnek.

A Linuxon és macOS-en futó ODBC-illesztőhöz szükséges -S. Az egyetlen érvényes protokollérték a .tcp

-U login_id

A bejelentkezési név vagy az adatbázisba foglalt felhasználónév. A tartalmazott adatbázis felhasználóinak meg kell adniuk az adatbázis neve opciót (-d).

Note

A OSQLUSER környezeti változó megmarad a visszamenőleges kompatibilitás érdekében. A SQLCMDUSER környezeti változó elsőbbséget élvez a OSQLUSER környezeti változóval szemben. Ez azt jelenti, hogy sqlcmd és osql interferencia nélkül használhatók egymás mellett. A régi szkriptek továbbra is működnek.

Ha nem adja meg a -U vagy a -P beállítást, sqlcmd a Windows hitelesítési móddal próbál csatlakozni. A hitelesítés az sqlcmd futtató felhasználó Windows-fiókján alapul.

Ha a -U lehetőséget használja a -E beállítással (amelyet a cikk későbbi részében ismertetünk), a rendszer hibaüzenetet hoz létre. Ha a -U beállítást egynél több argumentum követi, hibaüzenet jelenik meg, és a program kilép.

-z new_password

Módosítsa a jelszót. Cserélje le <oldpassword> a régi jelszóra, és <newpassword> az új jelszóra.

sqlcmd -U someuser -P <oldpassword> -z <newpassword>
sqlcmd -U someuser -P <oldpassword> -z <newpassword>
sqlcmd -U someuser -P <oldpassword> -z <newpassword>

-Z new_password

Módosítsa a jelszót, és lépjen ki. Cserélje le <oldpassword> a régi jelszóra, és <newpassword> az új jelszóra.

sqlcmd -U someuser -P <oldpassword> -Z <newpassword>
sqlcmd -U someuser -P <oldpassword> -Z <newpassword>
sqlcmd -U someuser -P <oldpassword> -Z <newpassword>

Bemeneti és kimeneti beállítások

-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage]

Megadja a bemeneti és kimeneti kódlapokat. A kódlapszám egy numerikus érték, amely egy telepített Windows-kódlapot határoz meg.

Kódlapkonvertálási szabályok:

  • Ha nem ad meg kódlapot, az sqlcmd az aktuális kódlapot használja mind a bemeneti, mind a kimeneti fájlokhoz, kivéve, ha a bemeneti fájl Unicode-fájl, amely esetben nincs szükség átalakításra.

  • sqlcmd automatikusan felismeri a big endian és a little-endian Unicode bemeneti fájlokat is. Ha megadja a -u beállítást, a kimenet mindig little-endian Unicode.

  • Ha nem ad meg kimeneti fájlt, a kimeneti kódlap a konzol kódlapja. Ezzel a módszerrel a kimenet megfelelően jelenik meg a konzolon.

  • A rendszer feltételezi, hogy több bemeneti fájl is ugyanazt a kódlapot használja. Unicode- és nem Unicode-bemeneti fájlok keverhetők.

Írja be chcp a parancssorba a cmd.exekódlapjának ellenőrzéséhez.

Note

Linux rendszeren a kódlapszám egy numerikus érték, amely egy telepített Linux-kódlapot határoz meg (amely a 17.5.1.1-es verzió óta érhető el).

-i input_file[,input_file2...]

Azonosítja azt a fájlt, amely Transact-SQL utasítások vagy tárolt eljárások kötegét tartalmazza. Több olyan fájlt is megadhat, amelyet az sqlcmd olvas be és dolgoz fel sorrendben. Ne használjon szóközöket a fájlnevek között. Az sqlcmd először ellenőrzi, hogy az összes megadott fájl létezik-e. Ha egy vagy több fájl nem létezik, sqlcmd kilép. A -i lehetőség és a -Q/-q lehetőségek kölcsönösen kizárják egymást.

Note

Ha egy -i vagy több további paramétert követő beállítást használ, akkor szóközt kell használnia a paraméter és az érték között. Ez a követelmény az sqlcmd (Go) ismert hibája.

Elérésiút-példák:

-i C:\<filename>
-i \\<Server>\<Share$>\<filename>
-i "C:\Some Folder\<file name>"

A szóközöket tartalmazó fájl elérési útjait idézőjelek közé kell foglalni.

Ezt a lehetőséget többször is használhatja:

sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>
sqlcmd -i <input_file1> -i <input_file2>

-o output_file

Az sqlcmd kimenetét fogadó fájlt azonosítja.

Ha megadja -u, az sqlcmd Unicode formátumban tárolja a output_file . Ha a fájlnév érvénytelen, az sqlcmd hibaüzenetet hoz létre, és kilép. sqlcmd nem támogatja több sqlcmd folyamat egyidejű írását ugyanarra a fájlra. Ha ez történik, vegye figyelembe, hogy a fájl kimenete sérült vagy helytelen. A -f lehetőség a fájlformátumok szempontjából is fontos. Az sqlcmd létrehozza ezt a fájlt, ha nem létezik. Az sqlcmd felülír egy korábbi munkamenet azonos nevű fájlját. Az itt megadott fájl nem a stdout fájl. Ha megad egy stdout fájlt, az sqlcmd nem használja ezt a fájlt.

Elérésiút-példák:

-o C:< filename>
-o \\<Server>\<Share$>\<filename>
-o "C:\Some Folder\<file name>"

A szóközöket tartalmazó fájl elérési útjait idézőjelek közé kell foglalni.

-r[0 | 1]

Átirányítja a hibaüzenet kimenetét a képernyőre (stderr). Ha nem ad meg paramétert, vagy ha 0ad meg, csak a 11-es vagy annál magasabb súlyosságú hibaüzenetek lesznek átirányítva. Ha 1ad meg, a rendszer átirányítja az összes hibaüzenet kimenetét, beleértve a PRINT is. Ez a beállítás nincs hatással a -ohasználata esetén. Alapértelmezés szerint a rendszer stdoutküld üzeneteket.

Note

Az sqlcmd (Go) segédprogramhoz -r0 vagy 1 argumentum szükséges.

-R

Csak a következőre vonatkozik: sqlcmd (ODBC).

Az sqlcmd lokalizálja az SQL Serverről az ügyfél területi beállításai alapján lekért numerikus, pénznem-, dátum- és időoszlopokat. Alapértelmezés szerint ezek az oszlopok a kiszolgáló területi beállításaival jelennek meg.

Note

Linuxon és macOS rendszeren -R jelenleg csak (amerikai angol) formázást használ en_US .

-u

Megadja, hogy a output_file Unicode formátumban legyen tárolva, a input_fileformátumától függetlenül.

Note

Az sqlcmd (Go) segédprogram esetében a létrehozott Unicode kimeneti fájl elő van tagolva az UTF-16 kis végű byte-order jelöléssel (BOM).

Lekérdezés-végrehajtási beállítások

-e

Bemeneti szkripteket ír a szabványos kimeneti eszközre (stdout).

-I

Csak a következőre vonatkozik: sqlcmd (ODBC).

Beállítja a SET QUOTED_IDENTIFIER kapcsolat opciót ON-re. Az alapértelmezett beállítás: OFF. További információ: SET QUOTED_IDENTIFIER.

Note

Ha le szeretné tiltani az idézett azonosító viselkedését az sqlcmd (Go) segédprogramban, adjon hozzá SET QUOTED IDENTIFIER OFF a szkriptekhez.

-q "parancsmag-lekérdezés"

Lekérdezést hajt végre az sqlcmd indításakor, de nem lép ki az sqlcmd-ből , amikor a lekérdezés befejeződik. Több, pontosvesszővel tagolt lekérdezést is futtathat. Használjon idézőjeleket a lekérdezés körül az alábbi példában látható módon.

A parancssorba írja be a következőt:

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

Important

Ne használja a GO terminátort a lekérdezésben.

Ha ezzel a beállítással együtt adja meg -b , az sqlcmd hibaüzenettel lép ki. A -b lehetőséget a cikk más részein ismertetjük.

-Q "parancsmag-lekérdezés"

Lekérdezést hajt végre, amikor sqlcmd elindul, majd azonnal kilép sqlcmd. Több, pontosvesszővel tagolt lekérdezést is végrehajthat.

Használjon idézőjeleket a lekérdezés körül az alábbi példában látható módon.

A parancssorba írja be a következőt:

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

Important

Ne használja a GO terminátort a lekérdezésben.

Ha ezzel a beállítással együtt adja meg -b , az sqlcmd hibaüzenettel lép ki. A -b lehetőséget a cikk más részein ismertetjük.

-t query_timeout

Meghatározza, hogy egy parancs (vagy Transact-SQL utasítás) hány másodperc után lép időtúllépésbe. Ez a beállítás az sqlcmd szkriptelési változót SQLCMDSTATTIMEOUTállítja be. Ha nem ad meg query_timeout értéket, akkor a parancs nem lép időkorlátba. A query_timeout értékének egy 1 és 65534 közé eső számnak kell lennie. Ha olyan értéket ad meg, amely nem numerikus vagy nem ebbe a tartományba esik, az sqlcmd hibát okoz.

Note

A tényleges időtúllépési érték néhány másodperccel eltérhet a megadott query_timeout értéktől.

-v var = érték [ var = érték... ]

Csak a Windowsra vonatkozik. A Linux és a macOS nem támogatott.

Létrehoz egy sqlcmd szkriptelési változót, amely egy sqlcmd szkriptben használható.

Ha az érték szóközöket tartalmaz, akkor idézőjelek közé foglalja az értéket. Több <var>="<value>" értéket is megadhat. Ha a megadott értékek bármelyike hibát tartalmaz, az sqlcmd hibaüzenetet hoz létre, majd kilép.

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

Az sqlcmd a szkriptelési változók figyelmen kívül hagyását okozza. Ez a paraméter akkor hasznos, ha egy szkript számos olyan INSERT utasítást tartalmaz, amelyek olyan sztringeket tartalmazhatnak, amelyek formátuma megegyezik a normál változókkal, például $(<variable_name>).

Formázási beállítások

-h fejlécek

Megadja az oszlopfejlécek között nyomtatandó sorok számát. Az alapértelmezett beállítás minden lekérdezési eredménykészlethez egyszer nyomtatja ki a fejléceket. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDHEADERS. A fejlécek nyomtatásának mellőzésére használható -1 . Érvénytelen érték esetén az sqlcmd hibaüzenetet generál, majd kilép.

-k [1 | 2]

Eltávolítja az összes vezérlőkaraktert, például a tabulátorokat és az új sorkaraktereket a kimenetből. Ez a paraméter megőrzi az oszlopformázást az adatok visszaadásakor.

  • -k eltávolítja a vezérlőkaraktereket.
  • -k1 minden vezérlőkaraktert lecserél egy szóközre.
  • -k2 az egymást követő vezérlőkaraktereket egyetlen szóközre cseréli.

-s col_separator

Az oszlopelválasztó karaktert adja meg. Az alapértelmezett érték egy üres terület. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDCOLSEP. Ha olyan karaktereket szeretne használni, amelyek különleges jelentéssel bírnak az operációs rendszer számára, például az ampersand (&) vagy pontosvessző (;), idézőjelek közé (") foglalja a karaktert. Az oszlopelválasztó bármilyen 8 bites karakter lehet.

-w screen_width

Megadja a kimenet képernyőszélességét. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDCOLWIDTH. Az oszlopszélességnek 8-nél nagyobb és 65536-nél kisebb számnak kell lennie. Ha a megadott oszlopszélesség nem esik ebbe a tartományba, sqlcmd hibaüzenetet hoz létre. Az alapértelmezett szélesség 80 karakter. Ha egy kimeneti sor túllépi a megadott oszlopszélességű értéket, az a következő sorra tördel.

-W

Eltávolítja a záró szóközöket egy oszlopból. Ezt az opciót a -s opcióval együtt használja, amikor adatokat készít elő, amelyeket egy másik alkalmazásba szeretne exportálni. Nem használható a -y vagy -Y beállításokkal.

-y változó_hossz_típus_megjelenítési_szélesség

Beállítja sqlcmd szkriptelési változót SQLCMDMAXVARTYPEWIDTH. Az alapértelmezett érték a 256. Korlátozza a nagy változóhosszúságú adattípusokhoz visszaadott karakterek számát:

  • varchar(max)
  • nvarchar(max)
  • varbinary(max)
  • xml
  • felhasználó által definiált adattípusok (UDT-k)
  • text
  • ntext
  • image

Az UDT-k a megvalósítástól függően rögzített hosszúságúak lehetnek. Ha egy rögzített hosszúságú UDT hossza rövidebb, mint display_width, a visszaadott UDT értékét ez nem befolyásolja. Ha azonban a hossz hosszabb, mint display_width, a kimenet csonkolt lesz.

Caution

Használja a -y 0 lehetőséget rendkívül óvatosan, mert a visszaadott adatok méretétől függően jelentős teljesítményproblémákat okozhat mind a kiszolgálón, mind a hálózaton.

-Y fixed_length_type_display_width

Beállítja sqlcmd szkriptelési változót SQLCMDMAXFIXEDTYPEWIDTH. Az alapértelmezett érték ( 0 korlátlan). A következő adattípusokhoz visszaadott karakterek számát korlátozza:

  • karakter (n), ahol 1 <≤ n< ≤ 8000
  • nchar(n), ahol 1 <= n<= 4000
  • varchar(n), ahol 1 <= n<= 8000
  • nvarchar(n), ahol 1 <= n<= 4000
  • varbinary(n), ahol 1 <= n<= 4000
  • sql_variant

Hibajelentési lehetőségek

-b

Megadja, hogy sqlcmd kilép, és hiba esetén DOS ERRORLEVEL értéket ad vissza. Az sqlcmd által a ERRORLEVEL változóhoz 1 visszaadott érték az, amikor az SQL Server hibaüzenetének súlyossági szintje meghaladja a 10-et. Ellenkező esetben a visszaadott érték a következő 0. Ha beállítja a -V beállítást, -b az sqlcmd nem jelez hibát, ha a súlyossági szint alacsonyabb, mint a -V beállítással meghatározott értékek. A parancssori kötegfájlok tesztelhetik a ERRORLEVEL értékét, és megfelelően kezelhetik a hibát. sqlcmd nem jelzi a 10-es súlyossági szintű (tájékoztató üzenetek) hibákat.

Ha a sqlcmd szkript helytelen megjegyzést, vagy szintaxishibát tartalmaz, vagy hiányzik belőle egy szkriptelési változó, a visszaadott eredmény ERRORLEVEL1.

-m error_level

Ez a funkció szabályozza, hogy mely hibaüzeneteket küldi a rendszer a stdout-ra. Az sqlcmd olyan üzeneteket küld, amelyek súlyossági szintje nagyobb vagy egyenlő ennél a szintnél. Ha ezt az értéket állítja be, az -1sqlcmd minden üzenetet elküld, beleértve az információs üzeneteket is. Ne tegyen szóközt a -m és a -1 közé. Például -m-1 érvényes, és -m -1 nem.

Ez a beállítás a sqlcmd szkriptelési változót is beállítja SQLCMDERRORLEVEL. Ez a változó alapértelmezett értéke 0.

-V hiba_súlyossági_szint

Az sqlcmd által a ERRORLEVEL változó beállításához használt súlyossági szintet szabályozza. A ERRORLEVELmegadott értéknél nagyobb vagy azzal egyenlő súlyossági szinttel rendelkező hibaüzenetek. A 0-nál kisebb értékek 0ként jelennek meg. A ERRORLEVEL változó értékét batch és CMD fájlokkal is tesztelheti.

Egyéb beállítások

-a packet_size

Eltérő méretű csomagot kér. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDPACKETSIZE. packet_size512 és 32767közötti értéknek kell lennie. Az alapértelmezett érték a 4096. A nagyobb csomagméret javíthatja a parancsok között GO sok Transact-SQL utasítással rendelkező szkriptek végrehajtásának teljesítményét. Nagyobb csomagméretet kérhet. Ha azonban a kérés megtagadva, sqlcmd a kiszolgáló alapértelmezett csomagméretét használja.

-c batch_terminator

A köteg terminátorát adja meg. Alapértelmezés szerint be kell fejeznie a parancsokat, és el kell küldenie őket az SQL Servernek egy külön sorban csak a GO szót használva, majd nyomja meg az Enter billentyűt. A kötegfolyamat lezáró visszaállításakor ne használjon Transact-SQL fenntartott kulcsszavakat vagy az operációs rendszer számára speciális jelentéssel bíró karaktereket. Még akkor sem, ha fordított perjellel vannak megelőzve.

-L[c]

Csak a Windowsra vonatkozik. A Linux és a macOS nem támogatott.

Felsorolja a helyileg konfigurált kiszolgálószámítógépeket, valamint a hálózaton sugárzott kiszolgálószámítógépek nevét. Ezt a paramétert nem használhatja más paraméterekkel kombinálva. A felsorolt kiszolgálószámítógépek maximális száma 3000. Ha a kiszolgálólista a puffer mérete miatt le van csonkolva, figyelmeztető üzenet jelenik meg.

Note

A hálózatokon való műsorszórás jellege miatt előfordulhat, hogy sqlcmd nem kap időben választ az összes kiszolgálótól. Ezért a visszaadott kiszolgálók listája ennek a beállításnak minden egyes meghívása esetén eltérő lehet.

Ha megadja az opcionális paramétert c, a kimenet a Servers: fejlécsor nélkül jelenik meg, és minden kiszolgálósor bevezető szóközök nélkül jelenik meg. Ezt a bemutatót tiszta kimenetnek nevezzük. A tiszta kimenet javítja a szkriptnyelvek feldolgozási teljesítményét.

-p[1]

Minden eredményhalmaz teljesítménystatisztikáit nyomtatja ki. Az alábbi megjelenítés a teljesítménystatisztikák formátumára mutat példát:

Network packet size (bytes): n

x xact[s]:

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

Where:

  • x = Az SQL Server által feldolgozott tranzakciók száma.
  • t1 = Az összes tranzakció teljes ideje.
  • t2 = Egyetlen tranzakció átlagos ideje.
  • t3 = A másodpercenkénti tranzakciók átlagos száma.

Minden időezredmásodpercben van.

Ha megadja az opcionális paramétert 1, a statisztikák kimeneti formátuma kettősponttal elválasztott formátumban van, amely könnyen importálható egy számolótáblába vagy egy szkripttel feldolgozható.

Ha az opcionális paramétert bármilyen más értékként megadja, mint a 1, a rendszer hibát generál, és kilép az sqlcmd.

-X[1]

Azokat a parancsokat tiltja le, amelyek veszélyeztethetik a rendszer biztonságát, amikor a sqlcmd kötegfájlból lesz végrehajtva. A letiltott parancsok továbbra is felismerve vannak; sqlcmd figyelmeztetést ad ki, és folytatódik. Ha megadja az opcionális paramétert 1, az sqlcmd hibaüzenetet hoz létre, majd kilép. A -X beállítás használatakor a következő parancsok lesznek letiltva:

  • ED
  • !! parancs

Ha megadja a -X beállítást, megakadályozza a környezeti változók sqlcmd-nek való átadását. Emellett megakadályozza a SQLCMDINI szkriptelési változóval megadott indítási szkript végrehajtását. Az sqlcmd szkriptelési változók további információ: sqlcmd – Használat szkriptelési változókkal.

-?

Megjeleníti az sqlcmd verzióját és egy összefoglalót a sqlcmd szintaxis opcióiról.

Note

MacOS rendszeren futtassa inkább a sqlcmd '-?' (idézőjelekkel).

Remarks

A szintaxis szakaszban látható sorrendben nem kell beállításokat használnia.

Note

Ha egy -i vagy több további paramétert követő beállítást használ, akkor szóközt kell használnia a paraméter és az érték között. Ez a követelmény az sqlcmd (Go) ismert hibája.

Az sqlcmd egy köteg több eredményhalmaza között üres sort nyomtat ki. Ezenkívül az <x> rows affected üzenet nem jelenik meg, ha az nem vonatkozik a futó utasításra.

Ha interaktívan szeretné használni sqlcmd, írja be a parancssorba a sqlcmd a cikkben korábban ismertetett lehetőségek bármelyikével. További információ: Az sqlcmd használata.

Note

A beállítások -l, -Qvagy -Z-i az sqlcmd a végrehajtás után való kilépését okozzák.

Az alapul szolgáló operációs rendszer határozza meg az sqlcmd parancssor teljes hosszát a parancskörnyezetben (például cmd.exebash), beleértve az összes argumentumot és kiterjesztett változót.

DSN-támogatás sqlcmd és bcp esetén

Az sqlcmd vagy a bcp -S opció (vagy a sqlcmd :Connect parancs) esetében megadhatja az adatforrás nevét (DSN) a kiszolgáló neve helyett, ha a -D van megadva. Ha ezt a lehetőséget használja, az -Dsqlcmd és a bcp csatlakozzon a DSN-ben megadott kiszolgálóhoz a -S beállítással.

A rendszer DSN-jei a odbc.ini fájlban vannak tárolva az ODBC SysConfigDir könyvtárban (/etc/odbc.ini standard telepítések esetén). A felhasználói DSN-eket a rendszer egy felhasználó kezdőkönyvtárában .odbc.ini (~/.odbc.ini) tárolja.

Windows rendszereken a rendszer- és felhasználói DSN-ek a beállításjegyzékben vannak tárolva, és a odbcad32.exe segítségével kezelhetők. A bcp és az sqlcmd nem támogatja a fájlDSN-eket.

Az illesztőprogram által támogatott bejegyzések listáját a DSN és a kapcsolati sztring kulcsszavak és attribútumok című témakörben találja.

DSN-ben csak a DRIVER bejegyzésre van szükség. Távoli kiszolgálóhoz való csatlakozáshoz az sqlcmd vagy a bcp elemnek szüksége van egy értékre SERVER . Ha az SERVER elem üres vagy nem található a DSN-ben, az sqlcmd vagy a bcp megpróbál csatlakozni a helyi rendszer alapértelmezett példányához.

Ha a bcp-t Windows rendszereken használja, az SQL Server 2017 (14.x) és a korábbi verziók megkövetelik az SQL Native Client 11 illesztőprogramot (sqlncli11.dll), míg az SQL Server 2019 (15.x) és újabb verziókhoz az SQL Server-illesztőprogramhozmsodbcsql17.dll () készült Microsoft ODBC Driver 17 szükséges.

Ha ugyanazt a beállítást adja meg a DSN-ben és az sqlcmd vagy bcp parancssorban is, a parancssori beállítás felülírja a DSN-ben használt értéket. Ha például a DSN tartalmaz egy bejegyzést DATABASE , és az sqlcmd parancssor tartalmazza -d, a rendszer az átadott -d értéket használja. Ha a DSN-ben adja meg Trusted_Connection=yes , a rendszer Kerberos-hitelesítést használ; a rendszer figyelmen kívül hagyja a felhasználónevet (-U) és a jelszót (-Pha meg van adva).

Az isql használatára meghívott meglévő szkripteket a következő alias definiálásával módosíthatja: alias isql="sqlcmd -D".

sqlcmd – ajánlott eljárások

Az alábbi eljárásokkal maximalizálhatja a biztonságot és a hatékonyságot:

  • Integrált biztonság használata.

  • Használjon -X[1] automatizált környezetekben.

  • A bemeneti és kimeneti fájlok biztonságossá tételéhez használja a megfelelő fájlrendszer-engedélyeket.

  • A teljesítmény növelése érdekében tegye a lehető legnagyobb mértékben egy sqlcmd munkamenetben a munkamenetek sorozatának használata helyett.

  • Állítsa be a köteg vagy lekérdezés végrehajtásának időtúllépési értékeit a köteg vagy lekérdezés várt végrehajtási idejénál magasabb értékekkel.

A helyesség maximalizálása érdekében használja az alábbi eljárásokat:

  • A -V 16 használatával naplózhatja a súlyosságú 16 szintű üzeneteket. A 16-os súlyosságú üzenetek olyan általános hibákat jeleznek, amelyeket kijavíthat.

  • Ellenőrizze a kilépési kódot és DOS ERRORLEVEL a változót a folyamat kilépése után. az sqlcmd a normál értéket adja vissza 0 . Ellenkező esetben a ERRORLEVEL a -V által beállítottak szerint van beállítva. Más szóval ne számítson ERRORLEVEL arra, hogy ugyanaz az érték, mint az SQL Serverről jelentett hibaszám. A hibaszám egy SQL Server-specifikus érték, amely megfelel a rendszerfüggvény @@ERROR. ERRORLEVEL egy sqlcmd-specifikus érték, amely jelzi az sqlcmd megszakításának okát. Értékét a paraméter megadásával lehet befolyásolni -b .

A -V 16-nak a kilépési kód és a DOS ERRORLEVEL ellenőrzésével együtt történő használata segíthet az automatizált környezetekben a hibák észlelésében, különösen az éles kiadás előtti minőségi kapuknál.