Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitikai 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-
[:]ED1 :Out[:]!!:Perftrace[:]QUIT:Connect[:]EXIT:On Error:r:Help-
:ServerList1 -
: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
-lbeállítás például beállítja azSQLCMDLOGINTIMEOUTsqlcmd változót. - Kifejezetten a
:Setvarparancs 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
stderrstreamre 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
stdoutstreamre 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:
:EXITNem 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:Perftracekü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