Megosztás a következőn keresztül:


sqlcmd segédprogram

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database a Microsoft Fabric

Az sqlcmd segédprogram lehetővé teszi Transact-SQL utasítások, rendszereljárások és szkriptfájlok megadását különböző módokon:

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

Jegyzet

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ő.

Megtudhatja, hogy melyik verziót telepítette

Az sqlcmd két verziója létezik:

  • A go-mssqldb-alapú sqlcmd, néha go-sqlcmdstílusú. Ez a verzió egy önálló eszköz, amelyet az SQL Servertől függetlenül tölthet le.

  • Az ODBC-alapú sqlcmd, amely az SQL Serverrel vagy a Microsoft parancssori segédprogramokkal érhető el, valamint a linuxos mssql-tools csomag része.

A telepített verzió meghatározásához futtassa a következő utasítást a parancssorban:

sqlcmd "-?"
sqlcmd "-?"
sqlcmd -?

Ha sqlcmd (Go) új verzióját használja, a kimenet a következő példához hasonló:

Version: 1.3.1

Verzió ellenőrzése

A sqlcmd --version segítségével meghatározhatja, hogy melyik verzió van telepítve. Legalább 1.0.0-s verzióval kell rendelkeznie.

Fontos

A csomagkezelőn keresztül történő sqlcmd (Go) telepítése a környezeti útvonalon lecseréli a sqlcmd (ODBC)-t sqlcmd (Go)-ra. A jelenlegi parancssori munkameneteket be kell zárni, és újra meg kell nyitni ahhoz, hogy ez érvénybe lépjen. sqlcmd (ODBC) nem lesz eltávolítva, és továbbra is használható a végrehajtható fájl teljes elérési útjának megadásával. A PATH változót is frissítheti, hogy jelezze, melyik elsőbbséget élvezi. Ehhez a Windows 11-ben nyissa meg a Rendszerbeállításokat, és lépjen a Névjegy > Speciális rendszerbeállításokrészhez. Amikor megnyílik rendszertulajdonságok, válassza a Környezeti változók gombot. Az alsó részén, a Rendszerváltozókalatt válassza az Elérési út lehetőséget, majd a Szerkesztésparancsot. Ha a helyen található sqlcmd (Go) a (C:\Program Files\sqlcmd az alapértelmezett) van felsorolva a C:\Program Files\Microsoft SQL Server\<version>\Tools\Binnelőtt, akkor a sqlcmd (Go) kerül használatra. Megfordíthatja a sorrendet, hogy sqlcmd (ODBC) legyen ismét az alapértelmezett.

Az sqlcmd letöltése és telepítése

sqlcmd (Go) platformfüggetlenül telepíthető Microsoft Windows, macOS és Linux rendszereken. Előfordulhat, hogy az 1.6-nál újabb verziók nem minden csomagkezelőben érhetők el. A rendelkezésre állásukhoz még nincs becsült dátum.

winget (Windows Package Manager CLI)

  1. Amennyiben még nem rendelkezik vele, telepítse a Windows Package Manager klienst.

  2. Futtassa a következő parancsot sqlcmd (Go) telepítéséhez.

    winget install sqlcmd
    

Csokoládés

  1. Telepítse Chocolatey, ha még nincs telepítve.

  2. Futtassa a következő parancsot sqlcmd (Go) telepítéséhez.

    choco install sqlcmd
    

Közvetlen letöltés

  1. Töltse le a megfelelő -windows-amd64.zip vagy -windows-arm.zip objektumot az sqlcmd (Go) legújabb kiadásából a GitHub kódtárából.

  2. Bontsa ki a sqlcmd.exe fájlt a letöltött zip mappából.

Előre telepített

Azure Cloud Shell

Az Azure Cloud Shellből kipróbálhatja az sqlcmd segédprogramot, mivel alapértelmezés szerint előre telepítve van:

Azure Data Studio

Azure Data Studioalkalmazásban az SQLCMD utasítások futtatásához válassza a szerkesztő eszköztárában a SQLCMD engedélyezése opciót.

SQL Server Management Studio (SSMS)

Ha SQLCMD-utasításokat szeretne futtatni SQL Server Management Studio (SSMS) alkalmazásban, válassza az SQLCMD módot a felső navigációs Lekérdezés menü legördülő listájából.

Az SSMS a Microsoft .NET-keretrendszer SqlClient-t használja a végrehajtáshoz rendszeres és SQLCMD módban a Lekérdezésszerkesztőben . Ha sqlcmd fut a parancssorból, sqlcmd az ODBC-illesztőt használja. Mivel az alapértelmezett beállítások eltérőek lehetnek, előfordulhat, hogy eltérő viselkedés jelenik meg, amikor ugyanazt a lekérdezést SQLCMD módban és az sqlcmd segédprogram SSMS-ben hajtja végre.

Szintaxis

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.

Az sqlcmd szintaxisának és használatának részletesebb információkért lásd ODBC sqlcmd szintaxis.

Az sqlcmd (ODBC) kompatibilitástörő változásai

A sqlcmd (Go) segédprogram számos kapcsolót és viselkedést módosít. A up-to-date list of missing flags for back compatibility, visit the Prioritize implement of back-compat flags GitHub vitafórum.

  • Az sqlcmd (Go) korábbi verzióiban a -P kapcsoló ideiglenesen el lett távolítva, és az SQL Server-hitelesítéshez csak az alábbi mechanizmusokon keresztül lehetett jelszavakat biztosítani:

    • A SQLCMDPASSWORD környezeti változó
    • A :CONNECT parancs
    • Amikor a rendszer kéri, a felhasználó beírhatja a jelszót a kapcsolat befejezéséhez
  • -r 0 vagy 1 argumentumot igényel

  • -R kapcsoló el lesz távolítva.

  • -I kapcsoló el lesz távolítva. Az idézett azonosító viselkedésének letiltásához adjon hozzá SET QUOTED IDENTIFIER OFF-et a szkriptekhez.

  • -N mostantól egy sztringértéket használ, amely lehet true, falsevagy disable a titkosítási beállítás megadásához. (default ugyanaz, mint a paraméter kihagyása)

    • Ha nincs megadva -N és -C, sqlcmd a kiszolgálótanúsítvány érvényesítése nélkül egyezteti a kiszolgálóval a hitelesítést.
    • Ha -N van megadva, de -C nem, sqlcmd a kiszolgálótanúsítvány érvényesítését igényli. A titkosítás false értéke továbbra is a bejelentkezési csomag titkosításához vezethet.
    • Ha -N és -C is meg van adva, sqlcmd a titkosítási egyeztetéshez használja az értékeiket.
    • Az ügyfél-/kiszolgálótitkosítási egyeztetésről további információt MS-TDS PRELOGINtalál.
  • -u A létrehozott Unicode kimeneti fájlhoz hozzá van írva az UTF-16 Little-Endian byte-order mark (BOM).

  • Bizonyos viselkedések, amelyek a OSQL való kompatibilitás fenntartása érdekében maradtak fenn, módosulhatnak, 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, így a EXIT(query) által futtatott lekérdezés több sorra is kiterjedhet.

Az sqlcmd (Go) segédprogram kapcsolatai TCP-kapcsolatokra korlátozódnak. A nevesített csövek jelenleg nem támogatottak a go-mssqldb meghajtóban.

Erősítés

  • :Connect mostantól választható -G paraméter az Azure SQL Database egyik hitelesítési módszerének kiválasztásához : SqlAuthentication, ActiveDirectoryDefault, ActiveDirectoryIntegrated, ActiveDirectoryServicePrincipal, ActiveDirectoryManagedIdentity, ActiveDirectoryPassword. További információ: Microsoft Entra-hitelesítés. 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.

  • Az új --driver-logging-level parancssori paraméter lehetővé teszi, hogy megtekintse a go-mssqldb illesztőprogram nyomkövetési adatait. A 64 használatával tekintse meg az összes nyomot.

  • sqlcmd mostantól függőleges formátumban is kinyomtathatja az eredményeket. A beállításhoz használja az új -F vertical parancssori kapcsolót. A SQLCMDFORMAT szkriptelési változó is szabályozza azt.

Parancssori beállítások

-Egy

Dedikált rendszergazdai kapcsolattal (DAC) jelentkezik be az SQL Serverre. Ez a kapcsolat a kiszolgáló hibaelhárítására szolgál. 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áknak. A -A beállítás nem támogatott a -G beállítással. Ha -Ahasználatával csatlakozik az Azure SQL Database-hez, rendszergazdának kell lennie a logikai SQL-kiszolgálón. A DAC nem érhető el a Microsoft Entra rendszergazdái számára.

-C

Ezt a beállítást az ügyfél úgy konfigurálja, hogy a kiszolgálótanúsítványt hitelesítés nélkül implicit módon megbízhatónak tekintse. 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 nincs megadva -N és -C, sqlcmd a kiszolgálótanúsítvány érvényesítése nélkül egyezteti a kiszolgálóval a hitelesítést.
  • Ha -N van megadva, de -C nem, sqlcmd a kiszolgálótanúsítvány érvényesítését igényli. A titkosítás false értéke továbbra is a bejelentkezési csomag titkosításához vezethet.
  • Ha -N és -C is meg van adva, sqlcmd a titkosítási egyeztetéshez használja az értékeiket.

-d db_name

Az sqlcmd indításakor egy USE <db_name> 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ókért, tekintse meg a DSN támogatást az sqlcmd és bcp programokban, valamint a kapcsolódási lehetőségeket az sqlcmd-hoz.

Jegyzet

A -D lehetőség csak Linux és macOS rendszerű ügyfeleken érhető el. Windows-ügyfeleken korábban egy elavult beállításra hivatkozott, amelyet eltávolítottak, és figyelmen kívül hagytak.

-l bejelentkezési_időtúllépés

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 a -G lehetőséget használja az Azure SQL Database-hez vagy az Azure Synapse Analyticshez való csatlakozáshoz és a Microsoft Entra-azonosítóval történő hitelesítéshez, legalább 30 másodperces időtúllépési érték javasolt. A bejelentkezési időtúllépésnek 0 és 65534közötti számnak kell lennie. Ha a megadott érték nem numerikus, vagy nem esik ebbe a tartományba, sqlcmd hibaüzenetet generál. 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.

-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 hajtsa végre a(z) sqlcmd -?-et.

-G

Ezt a lehetőséget az ügyfél használja az Azure SQL Database-hez vagy az Azure Synapse Analyticshez való csatlakozáskor annak megadásához, hogy a felhasználó hitelesítése Microsoft Entra-hitelesítéssel történjen. 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 sqlcmd -?végrehajtásával határozza meg a verzióját. További információ: Csatlakozás az SQL Database-hez vagy az Azure Synapse Analyticshez Microsoft Entra-hitelesítéssel. 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 Microsoft ODBC Driver 17 szükséges, valamint egy megfelelően Konfigurált Kerberos-környezet.

További információért a Microsoft Entra-hitelesítéssel kapcsolatban lásd: Microsoft Entra-hitelesítés 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 a sys.sysprocesses katalógusnézet hostname oszlopában található, és a tárolt eljárás sp_whohasználatával adható vissza. Ha ez a beállítás nincs megadva, az alapértelmezett beállítás az aktuális számítógépnév. Ez a név különböző sqlcmd munkamenetek azonosítására használható.

-j

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

-K application_intent

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 nincs megadva -K, sqlcmd nem támogatja a másodlagos replikával való kapcsolatot egy rendelkezésre állási csoportban. További információ: Aktív másodlagos elemek: Olvasható másodlagos replikája (Always On Elérhetőségi csoportok).

-M multisubnet_failover

Mindig adja meg a -M, amikor egy SQL Server rendelkezésre állási csoport vagy egy SQL Server feladatátvevőfürt-példány rendelkezésre állási csoportfigyelőjével csatlakozik. -M gyorsabb észlelést és kapcsolatot biztosít az (jelenleg) aktív kiszolgálóval. Ha nincs megadva -M, -M ki van kapcsolva. További információ a listenerekről, az ügyfélkapcsolódásról, a feladatátvételi, rendelkezésre állási csoportok (SQL Server)létrehozásáról és konfigurálásáról, feladatátvételi fürtözésről és Always On rendelkezésre állási csoportokról (SQL Server), valamint aktív másodlagos, olvasható replikákról (Always On rendelkezésre állási csoportok).

-N

Az ügyfél ezt a lehetőséget használja titkosított kapcsolat kéréséhez.

Az sqlcmd (Go) segédprogram esetében -N most egy sztringértéket vesz fel, amely lehet true, falsevagy disable a titkosítási választás megadásához. (default ugyanaz, mint a paraméter kihagyása):

  • Ha nincs megadva -N és -C, sqlcmd a kiszolgálótanúsítvány érvényesítése nélkül egyezteti a kiszolgálóval a hitelesítést.
  • Ha -N van megadva, de -C nem, sqlcmd a kiszolgálótanúsítvány érvényesítését igényli. A titkosítás false értéke továbbra is a bejelentkezési csomag titkosításához vezethet.
  • Ha -N és -C is meg van adva, sqlcmd a titkosítási egyeztetéshez használja az értékeiket.

-P jelszó

Felhasználó által megadott jelszó. A jelszavak megkülönböztetik a kis- és nagybetűket. Ha a -U beállítást használja, és nem használja a -P beállítást, és a SQLCMDPASSWORD környezeti változó nincs beállítva, sqlcmd kéri a felhasználótól a jelszót. Nem javasoljuk null (üres) jelszó használatát, de a null jelszót a paraméter értékéhez ("") egy összefüggő idézőjelpár használatával adhatja meg.

Fontos

A -P használata 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.

Javasoljuk, hogy 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 szigorúan kötegelt fájlokba kódoltként megadni. 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.

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

SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd
SET SQLCMDPASSWORD=p@a$$w0rd
sqlcmd

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

Jegyzet

A OSQLPASSWORD környezeti változó megtartva 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 opciót a -E opcióval használja, hibaüzenet keletkezik.

Ha a -P beállítást egynél több argumentum követi, 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.

-S [protokoll:]kiszolgáló[\instance_name][,port]

Megadja az SQL Server azon példányát, amelyhez csatlakozni szeretne. 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 nincs megadva kiszolgálószámítógép, sqlcmd csatlakozik a helyi számítógépen található SQL Server alapértelmezett példányához. Ez a beállítás akkor szükséges, ha sqlcmd-t hajt végre egy távoli számítógépről a hálózaton keresztül.

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.

Jegyzet

A OSQLSERVER környezeti változó megtartva 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.

-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).

Jegyzet

A OSQLUSER környezeti változó megtartva 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 beállítást használja a -E lehetőséggel (a cikk későbbi részében ismertetjük), hibaüzenet jön 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 új_jelszó

A jelszó módosítása:

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

-Z uj_jelszo

A jelszó módosítása és kilépés:

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

Bemeneti/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 nincs megadva kódlap, 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 a -u beállítás meg van adva, a kimenet mindig little-endian Unicode.

  • Ha nincs megadva kimeneti fájl, 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 ugyanahhoz a kódlaphoz tartoznak. Unicode- és nem Unicode-bemeneti fájlok keverhetők.

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

-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 fájl is megadható, amelyek olvasása és feldolgozása sorrendben történik. Ne használjon szóközöket a fájlnevek között. 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 és a -Q/-q lehetőségek kölcsönösen kizárják egymást.

Jegyzet

Ha a -i lehetőséget, majd egy vagy több további paramétert használ, akkor szóközt kell használnia a paraméter és az érték között. Ez egy ismert probléma a sqlcmd (Go) esetében.

Útvonal 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.

Ez a beállítás többször is használható:

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 -u van megadva, a output_file Unicode formátumban lesz tárolva. Ha a fájlnév érvénytelen, hibaüzenet jelenik meg, és sqlcmd kilép. sqlcmd nem támogatja több sqlcmd folyamat egyidejű írását ugyanarra a fájlra. A fájlkimenet sérült vagy helytelen. A -f lehetőség a fájlformátumok szempontjából is fontos. Ez a fájl akkor jön létre, ha nem létezik. Egy korábbi sqlcmd munkamenet azonos nevű fájlja felülíródik. Az itt megadott fájl nem a stdout fájl. Ha egy stdout fájl van megadva, a rendszer 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.

Jegyzet

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

-R

Csak a következőkre vonatkozik: ODBC sqlcmd.

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.

-u

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

Jegyzet

Az sqlcmd (Go) segédprogram esetén a létrehozott Unicode kimeneti fájlhoz az UTF-16 Little-Endian bájtsorrendi jel (BOM) kerül írásra.

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

-e

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

-Én

Csak a következőkre vonatkozik: ODBC sqlcmd.

Beállítja a SET QUOTED_IDENTIFIER kapcsolat opciót ON-re. Alapértelmezés szerint OFF. További információ: SET QUOTED_IDENTIFIER (Transact-SQL).

jegyzet

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, amikor sqlcmd elindul, de nem lép ki sqlcmd, amikor a lekérdezés befejeződött. Többszörös pontosvesszővel elválasztott lekérdezések végrehajthatók. 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 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;"

Fontos

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

Ha -b van megadva ezzel a beállítással együtt, sqlcmd hiba esetén kilép. -b ebben a cikkben máshol is 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 elválasztott lekérdezés 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 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;"

Fontos

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

Ha -b van megadva ezzel a beállítással együtt, sqlcmd hibaüzenet jelenik meg. -b ebben a cikkben máshol is ismertetjük.

-t lekérdezési_késleltetés

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 nincs megadva query_timeout érték, a parancs nem időtúllépést hajt végre. A query_timeout1 és 65534közötti számnak kell lennie. Ha a megadott érték nem numerikus, vagy nem ebbe a tartományba esik, sqlcmd hibaüzenetet generál.

Jegyzet

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... ]

Létrehoz egy sqlcmd szkriptelési változót, amely használható egy sqlcmd szkriptben. 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ármelyikében hiba lép fel, sqlcmd hibaüzenetet generál, 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 a fejlécek nyomtatása minden lekérdezési eredménykészlethez. Ez a beállítás beállítja a sqlcmd szkriptelési változót SQLCMDHEADERS. A -1 használatával megadhatja, hogy a fejlécek ne legyenek kinyomtatva. Minden érvénytelen érték miatt 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 képernyő szélesség

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

Ez a beállítás eltávolítja a záró szóközöket egy oszlopból. Ezt a lehetőséget a -s beállítással együtt használhatja egy másik alkalmazásba exportálandó adatok előkészítésekor. Nem használható a -y vagy -Y beállításokkal.

-y variable_length_type_display_width

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)
  • szöveg
  • ntext
  • kép

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 rövidebb, mint display_width, a visszaadott UDT értéke nem lesz hatással. Ha azonban a hossz hosszabb, mint display_width, a kimenet csonkolt lesz.

Figyelem

A -y 0 beállítást csak rendkívüli óvatossággal használja, 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 rögzített_hosszúságú_típus_kijelző_szélesség

Beállítja sqlcmd szkriptelési változót SQLCMDMAXFIXEDTYPEWIDTH. Az alapértelmezett érték a 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. A ERRORLEVEL változónak visszaadott érték 1, ha az SQL Server hibaüzenetének súlyossági szintje 10-nél nagyobb; ellenkező esetben a visszaadott érték 0. Ha a -V beállítás a -bmellett van beállítva, sqlcmd nem jelent hibát, ha a súlyossági szint alacsonyabb, mint a -Vhasználatával beállított é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. A rendszer olyan üzeneteket küld, amelyek súlyossági szintje nagyobb vagy egyenlő ennél a szintnél. Ha ez az érték -1értékre van állítva, a rendszer minden üzenetet elküld, beleértve az információs üzeneteket is. A -m és a -1között nem engedélyezett szóközök használata. 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

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 Batch- és CMD-fájlok a ERRORLEVEL változó értékének tesztelésére használhatók.

Egyéb beállítások

-a csomag_méret

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 azon szkriptek végrehajtását, amelyek GO parancsok között sok Transact-SQL utasítással rendelkeznek. 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 a parancsok leállnak, és az SQL Serverre küldik a GO szót egy sorba beírva. 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]

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. Ez a paraméter nem használható más paraméterekkel kombinálva. A felsorolt kiszolgálói számítógépek maximális száma 3000. Ha a kiszolgálólistát a puffer mérete miatt csonkolja, figyelmeztető üzenet jelenik meg.

Jegyzet

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 a beállítás minden egyes meghívása esetén eltérő lehet.

Ha az opcionális paraméter c van megadva, 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.)

Hol?

  • 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 meg van adva az opcionális 1 paraméter, a statisztikai adatok 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éter nem 1érték, a rendszer hibát generál, és sqlcmd kilép.

-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 meg van adva az opcionális 1 paraméter, sqlcmd hibaüzenetet generál, majd kilép. A -X beállítás használatakor a következő parancsok lesznek letiltva:

  • ED
  • !! parancs

Ha a -X beállítás meg van adva, megakadályozza a környezeti változók átadását sqlcmd. 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.

Jegyzet

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

Megjegyzések

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

Jegyzet

Ha a -i lehetőséget, majd egy vagy több további paramétert használ, akkor szóközt kell használnia a paraméter és az érték között. Ez egy ismert probléma sqlcmd (Go) esetében.

Ha több eredményt ad vissza, sqlcmd egy üres sort nyomtat ki a köteg egyes eredményhalmazai között. Ezenkívül a <x> rows affected üzenet nem jelenik meg, ha az nem vonatkozik a végrehajtott 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 segédprogram használata

Jegyzet

A beállítások -l, -Q, -Z vagy -isqlcmd kilépését okozzák a végrehajtás után.

Az sqlcmd parancssori teljes hosszát (például cmd.exe vagy bash) az alapul szolgáló operációs rendszer határozza meg, beleértve az összes argumentumot és kiterjesztett változót.

Változó elsőbbsége (alacsonytól magasig)

  1. Rendszerszintű környezeti változók
  2. Felhasználói szintű környezeti változók
  3. Az sqlcmd futtatása előtt a parancssorban beállított parancshéj (SET X=Y) beállítása a parancssorban történik.
  4. sqlcmd -v X=Y
  5. :Setvar X Y

Jegyzet

A környezeti változók megtekintéséhez nyissa meg Vezérlőpult, nyissa meg Rendszer, majd válassza a Speciális lapot.

sqlcmd szkriptelési változók

Változó Kapcsolódó opció R/W Alapértelmezett
SQLCMDUSER -U R ""
SQLCMDPASSWORD -P -- ""
SQLCMDSERVER -S R AlapértelmezettHelyiPéldány
SQLCMDWORKSTATION -H R Számítógépnév
SQLCMDDBNAME -d R ""
SQLCMDLOGINTIMEOUT -l R/W "8" (másodperc)
SQLCMDSTATTIMEOUT -t R/W "0" = várakozás határozatlan ideig
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" = korlátlan
SQLCMDEDITOR R/W edit.com
SQLCMDINI R ""
SQLCMDUSEAAD -G R/W ""

SQLCMDUSER, SQLCMDPASSWORDés SQLCMDSERVER:Connect használatakor vannak beállítva.

R azt jelzi, hogy az érték csak egyszer állítható be a program inicializálása során.

R/W azt jelzi, hogy az érték a :setvar paranccsal módosítható, és az azt követő parancsokat az új érték befolyásolja.

sqlcmd parancsok

Az sqlcmd Transact-SQL utasítások mellett a következő parancsok is elérhetők:

GO [ darabszám ]

:List

[:]RESET

:Error

[:]ED

:Out

[:]!!

:Perftrace

[:]QUIT

:Connect

[:]EXIT

:On Error

:r

:Help

:ServerList

:XML [ ON | OFF ]

:Setvar

:Listvar

Vegye figyelembe a következőket sqlcmd parancsok használatakor:

  • Minden sqlcmd parancsnak, kivéve GO, kettősponttal (:) kell kezdődniük.

    Fontos

    A meglévő osql- szkriptekkel való visszamenőleges kompatibilitás fenntartása érdekében a parancsok egy része a kettőspont nélkül lesz felismerve, amelyet a :jelez.

  • sqlcmd parancsok csak akkor lesznek felismerve, ha egy sor elején jelennek meg.

  • Minden sqlcmd parancs nem érzékeny a nagy- és kisbetűkre.

  • Minden parancsnak külön sorban kell lennie. A parancsokat nem lehet Transact-SQL utasítással vagy más paranccsal követni.

  • A parancsok végrehajtása azonnal történik. Nem kerülnek a végrehajtási pufferbe, mint ahogy a Transact-SQL utasítások.

Parancsok szerkesztése

[:]ED

Elindítja a szövegszerkesztőt. Ez a szerkesztő az aktuális Transact-SQL köteg vagy az utolsó végrehajtott köteg szerkesztésére használható. Az utolsó végrehajtott köteg szerkesztéséhez a ED parancsot közvetlenül az utolsó köteg végrehajtása után kell beírni.

A szövegszerkesztőt a SQLCMDEDITOR környezeti változó határozza meg. Az alapértelmezett szerkesztő Edit. A szerkesztő módosításához állítsa be a SQLCMDEDITOR környezeti változót. Ha például a szerkesztőt a Microsoft Jegyzettömbre szeretné állítani, írja be a parancssorba a következőt:

SET SQLCMDEDITOR=notepad

[:]VISSZAÁLLÍTÁS

Törli a nyilatkozat gyorsítótárát.

:Lista

Kinyomtatja az utasítások gyorsítótárának tartalmát.

Változók

:Setvar <var> [ "érték" ]

Definiálja sqlcmd szkriptelési változókat. A szkriptelési változók formátuma a következő: $(VARNAME).

A változónevek nem érzékenyek a kis- és nagybetűkre.

A szkriptelési változók a következő módokon állíthatók be:

  • Implicit módon parancssori lehetőség használata. A -l beállítás például beállítja az SQLCMDLOGINTIMEOUTsqlcmd változót.

  • Kifejezetten a :Setvar parancs használatával.

  • Környezeti változó definiálásával sqlcmdfuttatása előtt.

Jegyzet

A -X beállítás megakadályozza a környezeti változók átadását sqlcmd.

Ha egy :Setvar használatával definiált változónak és egy környezeti változónak ugyanaz a neve, akkor a :Setvar használatával definiált változó elsőbbséget élvez.

A változónevek nem tartalmazhatnak üres szóköz karaktereket.

A változónevek nem vehetik fel ugyanazt az alakot, mint egy változókifejezés, például $(var).

Ha a szkriptelési változó sztringértéke üres szóközöket tartalmaz, az értéket idézőjelek közé kell foglalni. Ha nincs megadva egy szkriptelési változó értéke, a szkriptelési változó el lesz dobva.

:Listvar

Megjeleníti az aktuálisan beállított szkriptelési változók listáját.

Jegyzet

Csak a sqlcmdáltal beállított szkriptelési változók jelennek meg, valamint azok, amelyek a :Setvar paranccsal vannak beállítva.

Kimeneti parancsok

:Hiba <fájlnév> | STDERR | STDOUT

Az összes hibakimenet átirányítása a fájlnéváltal megadott fájlra, stderr vagy stdout. A :Error parancs többször is megjelenhet egy szkriptben. Alapértelmezés szerint a hiba kimenet a stderr-ra kerül.

  • fájlnév

    Létrehoz és megnyitja a kimenetet fogadó fájlt. Ha a fájl már létezik, a program nulla bájtra csonkolja. Ha a fájl engedélyek vagy egyéb okok miatt nem érhető el, a kimenet nem lesz átváltva, és a rendszer az utolsó megadott vagy alapértelmezett célhelyre küldi.

  • STDERR

    A hibakimenetet a stderr streamre váltja. Ha ezt átirányították, a cél, amelyre a stream átirányítva lett, megkapja a hibakimenetet.

  • STDOUT

    A hibakimenetet a stdout streamre váltja. Ha ezt átirányították, a cél, amelyre a stream átirányítva lett, megkapja a hibakimenetet.

:Out <fájlnév> | STDERR | STDOUT

Létrehozza és átirányítja az összes lekérdezési eredményt a fájlnéváltal megadott fájlra, stderr vagy stdout. Alapértelmezés szerint a kimenet a stdout-ra küldődik. Ha a fájl már létezik, a program nulla bájtra csonkolja. A :Out parancs többször is megjelenhet egy szkriptben.

:Perftrace <fájlnév> | STDERR | STDOUT

Létrehozza és átirányítja az összes teljesítménykövetési információt a fájlnéváltal megadott fájlra, stderr vagy stdout. Alapértelmezés szerint a teljesítmény-követési kimenet a stdout-hez van küldve. Ha a fájl már létezik, a program nulla bájtra csonkolja. A :Perftrace parancs többször is megjelenhet egy szkriptben.

Végrehajtási vezérlőparancsok

:Hiba esetén [ kilépés | figyelmen kívül hagyás ]

Beállítja azt a műveletet, amelyet akkor kell végrehajtani, ha hiba történik a szkript vagy a köteg végrehajtása során.

A exit beállítás használatakor sqlcmd a megfelelő hibaértékkel lép ki.

A ignore beállítás használatakor sqlcmd figyelmen kívül hagyja a hibát, és folytatja a köteg vagy szkript végrehajtását. Alapértelmezés szerint egy hibaüzenet jelenik meg.

[:]KILÉPÉS

Az sqlcmd kilépését okozza.

[:]EXIT [ ( utasítás ) ]

Lehetővé teszi egy SELECT utasítás eredményének használatát sqlcmdvisszatérési értékeként. Ha numerikus, az utolsó eredménysor első oszlopa 4 bájtos egész számmá (hosszú) lesz konvertálva. Az MS-DOS, a Linux és a macOS az alacsony bájtot adja át a szülőfolyamat vagy az operációs rendszer hibaszintjének. A Windows 2000 és újabb verziók a teljes 4 bájtos egész számot továbbítja. A szintaxis: :EXIT(query)

Például:

:EXIT(SELECT @@ROWCOUNT)

A :EXIT paramétert kötegfájl részeként is felveheti. Írja be például a parancssorba a következőt:

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

Az sqlcmd segédprogram mindent a zárójelek (()) között küld a kiszolgálónak. Ha egy rendszer által tárolt eljárás kiválaszt egy halmazt, és értéket ad vissza, csak a kijelölés lesz visszaadva. A zárójelek között semmit nem tartalmazó :EXIT() utasítás mindent végrehajt a kötegben, majd visszatérési érték nélkül lép ki.

Helytelen lekérdezés megadásakor sqlcmd visszatérési érték nélkül lép ki.

Íme a EXIT formátumok listája:

  • :EXIT

    Nem hajtja végre a köteget, majd azonnal kilép, és nem ad vissza semmilyen értéket.

  • :EXIT( )

    Végrehajtja a köteget, majd kilép, és nem ad vissza értéket.

  • :EXIT(query)

    Végrehajtja a lekérdezést tartalmazó köteget, majd kilép a lekérdezés eredményeinek visszaadása után.

Ha RAISERROR egy sqlcmd szkriptben van használatban, és 127-es állapotot emel ki, sqlcmd kilép, és visszaadja az üzenetazonosítót az ügyfélnek. Például:

RAISERROR(50001, 10, 127)

Ez a hiba az sqlcmd szkript végét okozza, és visszaadja az 50001-es üzenetazonosítót az ügyfélnek.

A -99-1 visszatérési értékeit az SQL Server lefoglalja, sqlcmd pedig a következő további visszatérési értékeket határozza meg:

Visszaadott érték Leírás
-100 Hiba történt a visszatérési érték kiválasztása előtt.
-101 A visszatérési érték kiválasztásakor nem található sor.
-102 Konvertálási hiba történt a visszatérési érték kiválasztásakor.

GO [darabszám]

GO a köteg végét és a gyorsítótárazott Transact-SQL utasítások végrehajtását is jelzi. A csomag végrehajtása többször, külön csomagokként történik. Egyetlen kötegben nem deklarálhat egy változót többször.

Egyéb parancsok

:r <fájlnév>

További Transact-SQL utasításokat és sqlcmd parancsokat elemez a fájlnév által megadott fájlból az utasítás-gyorsítótárba. fájlnév a sqlcmd futtatását futtató indítókönyvtárhoz képest olvasható.

Ha a fájl olyan Transact-SQL utasításokat tartalmaz, amelyeket nem követ GO, akkor a :rkövető sorba kell beírnia a GO.

A fájl olvasása és végrehajtása egy batch terminátor találkozása után történik. Több :r parancsot is kiadhat. A fájl tartalmazhat bármilyen sqlcmd parancsot, beleértve a batch terminator GO.

Jegyzet

Az interaktív módban megjelenített sorok száma minden :r-parancshoz egy-egy számra nő. A :r parancs megjelenik a listaparancs kimenetében.

:Szerverlista

Felsorolja a helyileg konfigurált kiszolgálókat és a hálózaton sugárzott kiszolgálók nevét.

Csatlakozás server_name[\instance_name] [-l időtúllépés] [-U user_name [-P jelszó]]

Az SQL Server egy példányához csatlakozik. Az aktuális kapcsolatot is bezárja.

Időtúllépési lehetőségek:

Érték Magatartás
0 Várjon örökre
n>0 Várjon n másodpercig

A SQLCMDSERVER szkriptelési változó az aktuális aktív kapcsolatot tükrözi.

Ha nincs megadva időtúllépési, a SQLCMDLOGINTIMEOUT változó értéke az alapértelmezett érték.

Ha csak user_name van megadva (lehetőségként vagy környezeti változóként), a rendszer kéri a felhasználót, hogy adjon meg jelszót. A rendszer nem kéri a felhasználóktól, hogy a SQLCMDUSER vagy SQLCMDPASSWORD környezeti változók be lettek-e állítva. Ha nem ad meg beállításokat vagy környezeti változókat, a rendszer Windows-hitelesítési módot használ a bejelentkezéshez. Ha például az SQL Server instance1, myserveregy példányához szeretne csatlakozni integrált biztonság használatával, a következő parancsot kell használnia:

:connect myserver\instance1

Ha szkriptelési változók használatával szeretne csatlakozni az alapértelmezett myserver-példányhoz, használja a következő beállításokat:

:setvar myusername test
:setvar myservername myserver
:connect $(myservername) $(myusername)

[:]!! parancs

Operációsrendszer-parancsokat hajt végre. Operációsrendszer-parancs végrehajtásához indítson el egy vonalat két felkiáltójellel (!!), majd az operációs rendszer parancsával. Például:

:!! dir

Jegyzet

A parancs azon a számítógépen lesz végrehajtva, amelyen sqlcmd fut.

:XML [ BE | KI ]

További információért lásd ebben a cikkben az XML kimeneti formátumot és a JSON kimeneti formátumot.

:Segítség

Felsorolja sqlcmd parancsokat, valamint az egyes parancsok rövid leírását.

sqlcmd-fájlnevek

sqlcmd bemeneti fájlokat a -i beállítással vagy a :r paranccsal lehet megadni. A kimeneti fájlok a -o beállítással vagy a :Error, :Out és :Perftrace parancsokkal adhatók meg. Az alábbiakban néhány útmutatást talál a fájlok kezeléséhez:

  • :Error :Out és :Perftrace külön fájlnév értékeket kell használnia. Ha ugyanazt a fájlnevet használja,, a parancsok bemenetei össze lesznek keverődve.

  • Ha egy távoli kiszolgálón található bemeneti fájlt egy helyi számítógépen sqlcmd hív meg, és a fájl tartalmaz egy meghajtófájl elérési útját(például :Out c:\OutputFile.txt), a kimeneti fájl a helyi számítógépen jön létre, nem pedig a távoli kiszolgálón.

  • Az érvényes fájlelérési utak a következők: C:\<filename>, \\<Server>\<Share$>\<filename>és "C:\Some Folder\<file name>". Ha van szóköz az elérési úton, használjon idézőjeleket.

  • Minden új sqlcmd munkamenet felülírja az azonos nevű meglévő fájlokat.

Tájékoztató üzenetek

sqlcmd kinyomtatja a kiszolgáló által küldött tájékoztató üzeneteket. Az alábbi példában a Transact-SQL utasítások végrehajtása után egy tájékoztató üzenet lesz kinyomtatva.

Indítsa el sqlcmd. Az sqlcmd parancssorba írja be a lekérdezést:

USE AdventureWorks2022;
GO

Az ENTERlenyomásakor a következő tájékoztató üzenet lesz kinyomtatva:

Changed database context to 'AdventureWorks2022'.

A Transact-SQL lekérdezések kimeneti formátuma

sqlcmd először kinyomtat egy oszlopfejlécet, amely tartalmazza a kiválasztási listában megadott oszlopneveket. Az oszlopnevek a SQLCMDCOLSEP karakterrel vannak elválasztva. Alapértelmezés szerint ez egy szóköz. Ha az oszlop neve rövidebb az oszlopszélességnél, a kimenetet szóközökkel kell kipárnázni a következő oszlopig.

Ezt a sort egy elválasztó vonal követi, amely kötőjelkarakterek sorozata. Az alábbi kimenet egy példát mutat be.

Indítsa el sqlcmd. Az sqlcmd parancssorba írja be a lekérdezést:

USE AdventureWorks2022;
SELECT TOP (2) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO

Az ENTERlenyomásakor a következő eredményhalmaz lesz visszaadva.

BusinessEntityID FirstName    LastName
---------------- ------------ ----------
285              Syed         Abbas
293              Catherine    Abel
(2 row(s) affected)

Bár a BusinessEntityID oszlop csak négy karakter széles, meg lett hosszabbítva, hogy befogadja a hosszabb oszlopnevet. Alapértelmezés szerint a kimenet 80 karakter hosszúságú lesz. Ez a szélesség a -w beállítással vagy a SQLCMDCOLWIDTH szkriptelési változó beállításával módosítható.

XML-kimeneti formátum

A FOR XML záradék eredményeként kapott XML-kimenet formázatlanul kerül kiadásra folyamatos adatfolyamban.

Ha XML-kimenetre számít, használja a következő parancsot: :XML ON.

Jegyzet

sqlcmd a szokásos formátumban ad vissza hibaüzeneteket. A hibaüzenetek xml formátumú XML-szövegstreamben is jelennek meg. A :XML ONhasználatával sqlcmd nem jelenít meg tájékoztató üzeneteket.

Az XML mód kikapcsolásához használja a következő parancsot: :XML OFF.

A GO parancs nem jelenhet meg a :XML OFF parancs kiadása előtt, mert a :XML OFF parancs a sqlcmd-et sororientált kimenetre váltja.

Az XML- (streamelt) adatok és a sorhalmazok adatai nem keverhetők össze. Ha a :XML ON parancs nincs kiadva azelőtt, hogy a Transact-SQL utasítás, amely XML-adatfolyamokat bocsát ki, végrehajtásra kerül, akkor a kimenet zavaros lesz. A :XML ON parancs kiadása után nem hajthat végre Transact-SQL normál sorkészleteket kibocsátó utasításokat.

Jegyzet

A :XML parancs nem támogatja a SET STATISTICS XML utasítást.

JSON kimeneti formátum

Ha JSON-kimenetre számít, használja a következő parancsot: :XML ON. Ellenkező esetben a kimenet tartalmazza az oszlop nevét és a JSON-szöveget is. Ez a kimenet nem érvényes JSON.

Az XML mód kikapcsolásához használja a következő parancsot: :XML OFF.

További információért lásd ebben a cikkben a XML-kimeneti formátumot alatt.

Microsoft Entra-hitelesítés használata

Példák a Microsoft Entra-hitelesítés használatára:

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net  -G  -l 30

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net  -G  -l 30

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net  -G  -l 30

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob@contoso.com -P MyAzureADPassword -l 30

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 egy sqlcmd munkamenetben végezze el a lehető legtöbb műveletet a munkamenetek sorozata helyett.

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

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 a felhasználó kijavíthat.

  • Ellenőrizze a kilépési kódot, és DOS ERRORLEVEL változót a folyamat befejezése után. sqlcmd általában 0 ad vissza, ellenkező esetben a -Váltal konfigurált ERRORLEVEL állítja be. Más szóval a ERRORLEVEL várhatóan nem lesz ugyanaz az érték, mint az SQL Serverről jelentett hibaszám. A hibaszám egy SQL Server-specifikus érték, amely a @@ERRORrendszerfüggvénynek felel meg. ERRORLEVEL egy sqlcmd-specifikus érték, amely jelzi, hogy miért sqlcmd leállt, és értékét -b parancssori argumentum megadásával befolyásolja.

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.