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 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-
[:]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.
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
-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, 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
stderrstreamre 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
stdoutstreamre 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:
:EXITNem 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-Nmlesz az alapértelmezett (amandatoryeseté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)optionalaz alapértelmezett.Value Description -NsSzigorú -Nm(alapértelmezett)Mandatory -NoOpcioná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 0Várjon örökre n>0Várjon n másodpercig A
SQLCMDSERVERszkriptelési változó az aktuális aktív kapcsolatot tükrözi.Ha nincs megadva időtúllépési, a
SQLCMDLOGINTIMEOUTvá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:Perftraceeseté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