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


Az sqlcmd segédprogram parancsai

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édprogram Transact-SQL utasításokat, rendszereljárásokat és szkriptfájlokat fogad el.

Note

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.

Az sqlcmd Transact-SQL utasításai mellett használja a következő parancsokat:

  • GO [ <count> ]
  • :List
  • [:]RESET
  • :Error
  • [:]ED 1
  • :Out
  • [:]!!
  • :Perftrace
  • [:]QUIT
  • :Connect
  • [:]EXIT
  • :On Error
  • :r
  • :Help
  • :ServerList 1
  • :XML [ ON | OFF ] 1
  • :Setvar
  • :Listvar

1 Linux vagy macOS rendszeren nem támogatott.

Az sqlcmd parancsok használatakor tartsa szem előtt az alábbi szempontokat:

  • Az sqlcmd parancsokat kivéve GOminden parancsnak kettősponttal (:) kell kezdődnie.

    Important

    A meglévő osql-szkriptekkel való visszamenőleges kompatibilitás fenntartása érdekében egyes parancsok kettőspont nélkül működnek (ezt [:]jelzi).

  • Az sqlcmd csak akkor ismeri fel a parancsokat, ha azok 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. Nem követhet Transact-SQL utasítással vagy más paranccsal rendelkező parancsokat.

  • A parancsok azonnal futnak. 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. Ezzel a szerkesztőben szerkesztheti az aktuális Transact-SQL köteget vagy az utolsó futtatási köteget. Az utolsó futtatási köteg szerkesztéséhez írja be a ED parancsot közvetlenül az utolsó köteg végrehajtása után.

A SQLCMDEDITOR környezeti változó határozza meg a szövegszerkesztőt. 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 következő parancsot:

SET SQLCMDEDITOR=notepad

[:]RESET

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

:List

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

Variables

: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ók nevei 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ása az sqlcmd futtatása előtt.

Note

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.

Note

Csak az sqlcmd által beállított szkriptelési változók és a :Setvar parancs használatával beállított változók jelennek meg.

Kimeneti parancsok

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

Az összes hibakimenet átirányítása a fájlnév által megadott fájlra, a fájlnévre stderrvagy a fájlra stdout. A :Error parancs többször is megjelenhet egy szkriptben. Alapértelmezés szerint a hibakimenet a következő lesz stderr: .

  • filename

    Létrehoz és megnyitja a kimenetet fogadó fájlt. A meglévő fájlokat a rendszer nulla bájtra csonkolja. Ha a fájl engedélyek vagy egyéb okok miatt nem érhető el, a kimenet nem kerül átirányításra, és az utolsó megadott vagy alapértelmezett cél kapja meg a hibakimenetet.

  • STDERR

    A hibakimenetet a stderr streamre váltja. Ha a kimenet át van irányítva, a cél, amelyre a streamet irányítjuk, megkapja a hibakimenetet.

  • STDOUT

    A hibakimenetet a stdout streamre váltja. Ha a kimenet átirányítva van, a cél, amelyre a streamet átirányítja, 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, a fájlnévre stderrvagy a fájlra stdout. Alapértelmezés szerint a kimenet a következő lesz stdout: . 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ény-nyomkövetési információt a fájlnév által megadott fájlra, a fájlnévre stderrvagy a fájlra stdout. Alapértelmezés szerint a teljesítménykövetés kimenete a következő lesz stdout: . A meglévő fájlokat a rendszer 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, amely akkor hajtható végre, ha hiba történik a szkript vagy a köteg végrehajtása során.

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

A beállítás használatakor az ignoresqlcmd figyelmen kívül hagyja a hibát, és folytatja a köteg vagy szkript végrehajtását. Alapértelmezés szerint az sqlcmd hibaüzenetet nyomtat.

[:]QUIT

Az sqlcmd kilépését okozza.

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

Az utasítás eredményét SELECT használja az sqlcmd visszaté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 adják át. A szintaxis a következő: :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 :EXIT() zárójelek között semmit nem tartalmazó utasítás lefuttatja a kötegben előtte lévő összes parancsot, majd visszatérési érték adása nélkül lép ki.

Ha helytelen lekérdezést ad meg, az sqlcmd visszatérési érték nélkül lép ki.

Íme a EXIT formátumok listája:

  • :EXIT

    Nem futtatja a köteget, majd azonnal kilép, és nem ad vissza értéket.

  • :EXIT( )

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

  • :EXIT(query)

    Futtatja a lekérdezést magában foglaló köteget, majd kilép, miután visszaadja a lekérdezés eredményeit.

Ha egy RAISERROR szkripten belül használja, és 127-es állapotot állít be, az 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.

Az SQL Server által fenntartott visszatérési értékek -1 és -99, az sqlcmd pedig további visszatérési értékeket határoz meg.

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

INDÍTÁS [count]

GO jelzi mind a tétel végét, mind a gyorsítótárazott Transact-SQL utasítások végrehajtását. A tétel többször is külön tételként fut. 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. Az sqlcmd az indítási könyvtárhoz képest beolvassa a fájlnevet .

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

Az sqlcmd beolvassa és futtatja a fájlt, miután egy kötegelt terminátorba ütközik. Több :r parancsot is kiadhat. A fájl bármilyen sqlcmd parancsot tartalmazhat, beleértve a batch terminatort GOis.

Note

Az interaktív módban megjelenő sorok száma minden :r észlelt parancs esetében egyenként nő. A :r parancs megjelenik a listaparancs kimenetében.

:ServerList

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ó]] [-N[s|m|o]] [-F hostname_in_certificate]

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

Important

A :Connect parancs nem implicit kötegelválasztóként működik. Az aktuális kötegben pufferelt Transact-SQL utasítások csak go parancs kiadásáig futnak. Ha több :Connect parancsot használ beavatkozó GO utasítások nélkül, az összes pufferelt utasítás az utolsó csatlakoztatott kiszolgálón fut, és nem mindegyik kiszolgálón egyenként.

  • Titkosítási lehetőségek (-N[s|m|o]):

    Ezzel a beállítással titkosított kapcsolatot kérhet. Ha nem adja meg -N, akkor -Nm lesz az alapértelmezett (a mandatory esetében). Ez a beállítás az SQL Server 2022 (16.x) és a korábbi verziókhoz képest kompatibilitástörő változást jelent, ahol -No (a) optional az alapértelmezett.

    Value Description
    -Ns Szigorú
    -Nm (alapértelmezett) Mandatory
    -No Opcionális
  • Állomásnév a tanúsítványban (-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. Ez a paraméter akkor tölthető ki, ha a kiszolgáló neve nem felel meg a CN-nek vagy a SAN-nak, például DNS-aliasok használatakor.

  • Időtúllépési beállítások:

    Value Behavior
    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 ad meg (beállításként vagy környezeti változóként), az sqlcmd kéri, hogy adjon meg jelszót. A felhasználók nem kapnak felhívást, ha a SQLCMDUSER vagy SQLCMDPASSWORD környezeti változók be vannak á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 a szkriptelési változók alapértelmezett példányához myserver szeretne csatlakozni, használja a következő beállításokat:

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

[:]!! command

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

:!! dir

Note

A parancs azon a számítógépen fut, amelyen az 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.

:Help

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

sqlcmd fájlnevek

Adja meg a sqlcmd bemeneti fájlokat az -i opció vagy a :r parancs használatával. Adja meg a kimeneti fájlokat a -o opció vagy a :Error, :Out és a :Perftrace parancsok használatával. Ha ezekkel a fájlokkal dolgozik, kövesse az alábbi irányelveket:

  • Használjon külön fájlnév értékeket :Error, :Out, és :Perftrace esetén. Ha ugyanazt a fájlnevet használja, lehetséges, hogy a parancsok bemenetei összekeverednek.

  • Ha egy távoli kiszolgálón található bemeneti fájlt hív meg egy helyi számítógépen található sqlcmd-ről , és a fájl tartalmaz egy meghajtófájl elérési útját, például :Out c:\OutputFile.txt, az sqlcmd a kimeneti fájlt a helyi számítógépen hozza 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álj idézőjeleket.

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

Tájékoztató üzenetek

Az sqlcmd kinyomtatja a kiszolgáló által küldött információs üzeneteket. Az alábbi példában, miután az sqlcmd futtatta a Transact-SQL utasításokat, egy tájékoztató üzenetet nyomtat ki.

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

USE AdventureWorks2025;
GO

Az Enter billentyű lenyomásakor az sqlcmd a következő tájékoztató üzenetet nyomtatja ki:

Changed database context to 'AdventureWorks2025'.

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 az oszlopelválasztó egy szóköz. Ha az oszlop neve rövidebb az oszlopszélességnél, az sqlcmd a kimenetet szóközökkel a következő oszlopig párnáztatja.

Az sqlcmd egy szaggatott karaktersorozatú elválasztó vonalat nyomtat ki. Az alábbi kimenet egy példát mutat be.

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

USE AdventureWorks2025;

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

Az Enter billentyű lenyomásakor az sqlcmd a következő eredményhalmazt adja vissza.

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

Bár az BusinessEntityID oszlop csak négy karakter széles, a hosszabb oszlopnévhez igazodva bővül. Alapértelmezés szerint az sqlcmd 80 karakternél leállítja a kimenetet. A szélességet az -w opció használatával vagy a SQLCMDCOLWIDTH szkript változó megadásával módosíthatja.

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.

Note

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 parancsot nem adták ki az XML-adatfolyamokat kibocsátó Transact-SQL utasítás előtt, a kimenet összezavarodik. A :XML ON parancs kiadása után nem futtathat olyan Transact-SQL utasításokat, amelyek normál sorkészleteket adnak ki.

Note

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