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 lehetővé teszi Transact-SQL utasítások, rendszereljárások és szkriptfájlok megadását.

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ások mellett a következő parancsok is elérhetők:

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

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

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

    Important

    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

[:]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, 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.

  • filename

    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 a kimenet átirányítva lett, a cél, amelyre a streamet átirányítja, megkapja a hibakimenetet.

  • STDOUT

    A hibakimenetet a stdout streamre váltja. Ha a kimenet átirányítva lett, 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, 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.

[:]QUIT

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 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 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 feladatot, 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 -1-99 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 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 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. A fájlnév az indítókönyvtárhoz képest olvasható, amelyben az sqlcmd fut.

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.

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 bármilyen sqlcmd parancsot tartalmazhat, beleértve a batch terminatort GOis.

Note

Az interaktív módban megjelenített sorok száma minden :r észlelt parancs esetében egy-egyel 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ó]]

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

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

[:]!! command

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

Note

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.

:Help

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 megadhatók a -o beállítással vagy a , :Errorés :Out parancsokkal:Perftrace. 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álj 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 az sqlcmd parancsot. 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 az oszlopelválasztó 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 az sqlcmd parancsot. 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 az BusinessEntityID oszlop csak négy karakter széles, a hosszabb oszlopnévhez igazodva bővül. 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.

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 végrehajtása előtt, a kimenet el nem érhető. A :XML ON parancs kiadása után nem hajthat végre Transact-SQL normál sorkészleteket kibocsátó utasításokat.

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