Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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 parancssori segédprogram Transact-SQL (T-SQL) utasítások és szkriptek alkalmi, interaktív végrehajtásához. Emellett automatizálja a T-SQL-szkriptelési feladatokat is. Az sqlcmd interaktív használatához vagy az sqlcmd szkriptfájljainak létrehozásához ismernie kell a T-SQL-t. Az sqlcmd többféleképpen is használhatja. Például:
Írja be a parancssori felületről (CLI) származó T-SQL-utasításokat. A konzol visszaadja az eredményeket.
Note
A Windowsban megnyithat egy parancssori ablakot
cmda Windows keresőmezőjében, és kiválaszthatja a parancssort. MacOS és Linux rendszeren használhatja a beépített terminálemulátort.Írja be
sqlcmda konzolba, majd a kívánt beállítások listáját, és végül nyomja meg az Enter billentyűt. Az sqlcmd által támogatott lehetőségek teljes listáját az sqlcmd segédprogramban találja.Küldjön be egy sqlcmd feladatot egyetlen végrehajtandó T-SQL-utasítás megadásával, vagy a segédprogramot egy végrehajtandó T-SQL-utasításokat tartalmazó szövegfájlra mutatva. A kimenet egy szövegfájlba van irányítva, de a konzolon is megjeleníthető.
SQLCMD mód az SQL Server Management Studióban (SSMS).
SQL Server Management Objects (SMO).
SQL Server Agent CmdExec feladatok.
Az sqlcmd gyakori beállításai
A kiszolgálói beállítás (
-S) azon SQL Server-példányt azonosítja, amelyhez sqlcmd csatlakozik.A hitelesítési beállítások (
-E,-Ués-P) határozzák meg az sqlcmd által az SQL Server-példányhoz való csatlakozáshoz használt hitelesítő adatokat.Note
Ez az alapértelmezett beállítás
-E, és nem szükséges megadni.A bemeneti beállítások (
-Q,-qés-i) azonosítják az sqlcmd bemenetének helyét.A kimeneti beállítás (
-o) megadja azt a fájlt, amelyben az sqlcmd írja a kimenetét.
Csatlakozás az sqlcmd segédprogramhoz
Csatlakozzon egy alapértelmezett példányhoz a Windows-hitelesítés használatával a T-SQL-utasítások interaktív futtatásához:
sqlcmd -S <ComputerName>Note
Az előző példában nincs megadva,
-Emert ez az alapértelmezett érték. Az sqlcmd a Windows-hitelesítés használatával csatlakozik az alapértelmezett példányhoz.Csatlakozzon egy elnevezett példányhoz a Windows-hitelesítés használatával a T-SQL-utasítások interaktív futtatásához:
sqlcmd -S <ComputerName>\<InstanceName>or
sqlcmd -S .\<InstanceName>Csatlakozzon egy elnevezett példányhoz a Windows-hitelesítés használatával, és adja meg a bemeneti és kimeneti fájlokat:
sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>Csatlakozzon a helyi számítógép alapértelmezett példányához Windows-hitelesítéssel, hajtson végre egy lekérdezést, és futtassa sqlcmd a lekérdezés befejezése után:
sqlcmd -q "SELECT * FROM AdventureWorks2025.Person.Person"Csatlakozzon a helyi számítógép alapértelmezett példányához Windows-hitelesítéssel, végezzen lekérdezést, irányítsa a kimenetet egy fájlhoz, és lépjen ki sqlcmd a lekérdezés befejezése után:
sqlcmd -Q "SELECT * FROM AdventureWorks2025.Person.Person" -o MyOutput.txtCsatlakozzon egy elnevezett példányhoz az SQL Server-hitelesítés használatával a T-SQL-utasítások interaktív futtatásához, sqlcmd jelszó kérésével:
sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>Tip
Az sqlcmd segédprogram által támogatott beállítások listájának megtekintéséhez futtassa a következőt:
sqlcmd -?.
Transact-SQL utasítások interaktív futtatása sqlcmd használatával
Az sqlcmd segédprogram interaktív használatával t-SQL-utasításokat hajthat végre a konzolon. A T-SQL-utasítások sqlcmdhasználatával történő interaktív végrehajtásához futtassa a segédprogramot a bemeneti fájlok vagy lekérdezések megadására szolgáló -Q, -q, -Zvagy -i beállítások használata nélkül. Például:
sqlcmd -S <ComputerName>\<InstanceName>
Ha bemeneti fájlok vagy lekérdezések nélkül futtatja a parancsot, az sqlcmd az SQL Server megadott példányához csatlakozik. Ekkor megjelenik egy új sor, 1> amelyet egy villogó aláhúzásjel követ, amelyet az sqlcmd parancssornak hívnak. A 1 azt jelzi, hogy ez egy T-SQL-utasítás első sora, és a sqlcmd parancssor az a pont, ahol a T-SQL utasítás elindul a beíráskor.
Az sqlcmd parancssorba beírhatja a T-SQL-utasításokat és sqlcmd parancsokat is, például GO és EXIT. Minden T-SQL-utasítás egy utasításgyorsítótár nevű pufferbe kerül. Ezeket az utasításokat a rendszer a GO parancs beírása után küldi el az SQL Servernek, majd nyomja le az Enterbillentyűt. Ha ki szeretne lépni sqlcmd, írja be EXIT vagy QUIT egy új sor elején.
A nyilatkozat gyorsítótár törléséhez írja be a :RESET. A CtrlC+ beírásával az sqlcmd kilép.
Ctrl+A C parancsot követően az utasítás-gyorsítótár végrehajtásának leállítására GO is használható.
Írja be a parancsot az :EDsqlcmd parancssorba a T-SQL-utasítások szerkesztéséhez. Megnyílik a szerkesztő, és a T-SQL utasítás szerkesztése és a szerkesztő bezárása után a módosított T-SQL-utasítás megjelenik a parancsablakban. Adja meg GO a módosított T-SQL-utasítás futtatásához.
Idézett karakterláncok
Az idézőjelek közé zárt karaktereket további előfeldolgozás nélkül is használhatja, azzal a kivétellel, hogy idézőjeleket szúrhat be egy sztringbe két egymást követő idézőjel megadásával. Az SQL Server ezt a karaktersorozatot egyetlen idézőjelként kezeli. (A fordítás azonban a kiszolgálón történik.) A szkriptelési változók nem lesznek kibontva, amikor egy sztringben jelennek meg.
Például:
sqlcmd
PRINT "Length: 5"" 7'";
GO
Itt van az eredmény.
Length: 5" 7'
Több sorra kiterjedő szövegrészek
sqlcmd támogatja a több sorra kiterjedő karakterláncokat. Az alábbi SELECT utasítás például több sorra terjed ki, de a GO beírása után egyetlen sztringként hajtható végre, majd nyomja le a Enterbillentyűt.
SELECT <First line>
FROM <Second line>
WHERE <Third line>;
GO
Interaktív sqlcmd-példa
Ez a példa az sqlcmd interaktív futtatásakor megjelenő elemeket mutatja be.
Amikor megnyit egy konzolablakot a Windowsban, az alábbi példához hasonló kimenet jelenhet meg:
C:\Temp\>
Ez a sor azt jelenti, hogy a mappa C:\Temp\ az aktuális mappa. Ha megad egy fájlnevet, az operációs rendszer megkeresi a fájlt a mappában.
Írja be az sqlcmd parancsot az SQL Server alapértelmezett példányához való csatlakozáshoz a helyi számítógépen. A konzolablak tartalma a következő:
C:\Temp>sqlcmd
1>
Ez a kimenet azt jelenti, hogy csatlakozott az SQL Server-példányhoz. Az sqlcmd készen áll a T-SQL-utasítások és az sqlcmd parancsok elfogadására. A 1> után villogó aláhúzás az sqlcmd jelző. Jelzi a beírt utasítások és parancsok megjelenítésének helyét. Most írja be USE AdventureWorks2025 és nyomja le az Enter billentyűt. Ezután írja be GO és nyomja le az Enter billentyűt. A konzol tartalma a következő:
sqlcmd
USE AdventureWorks2025;
GO
Itt van az eredmény.
Changed database context to 'AdventureWorks2025'.
1>
Amikor megnyomja a Enterbillentyűt, az jelet ad a sqlcmd számára, hogy egy új sort kezdjen. Nyomja le az Enter billentyűt, miután beírta GO az sqlcmd parancsot, hogy elküldje az USE AdventureWorks2025 utasítást az SQL Server példánynak.
Az sqlcmd ezután egy üzenetet ad vissza, amely jelzi, hogy az USE utasítás sikeresen befejeződött. Új 1> prompt jelenik meg jelként egy új utasítás vagy parancs megadásához.
Az alábbi példa bemutatja, hogy mit tartalmaz a konzol, ha beír egy utasítást SELECT , egy GO a parancs végrehajtásához SELECT, és egy EXIT az sqlcmdből való kilépéshez:
USE AdventureWorks2025;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Itt van az eredmény.
BusinessEntityID FirstName LastName
----------------- ---------- ------------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
Miután sqlcmd generálja a kimenetet, visszaállítja az sqlcmd parancssorát az alapértelmezett állapotba, és megjeleníti 1>. Írja be EXIT a 1> parancsnál a munkamenetből való kilépéshez. Most már bezárhatja a konzolablakot egy másik EXIT parancs beírásával, majd az Enter paranccsal.
SQL Server-tároló létrehozása és lekérdezése
A sqlcmd (Go) használatával létrehozhat egy új SQL Server-példányt egy tárolóban.
Az sqlcmd (Go) egy utasítást create tesz elérhetővé a tárolólemezkép és az SQL Server biztonsági mentésének megadásához. Gyorsan létrehozhat egy SQL Server-példányt fejlesztési, hibakeresési és elemzési célokra.
Az alábbi parancs bemutatja, hogyan tekintheti meg az új SQL Server-tároló létrehozásához rendelkezésre álló összes lehetőséget:
sqlcmd create mssql --help
A következő parancs létrehoz egy új SQL Server-példányt az SQL Server 2025 legújabb verziójával (17.x), majd visszaállítja a Wide World Importers mintaadatbázist:
sqlcmd create mssql --accept-eula --tag 2025-latest --using https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak
Az SQL Server-példány létrehozása után az sqlcmd (Go) használatával kezelheti és kérdezheti le.
A következő parancs megerősíti a létrehozott példány verzióját:
sqlcmd query "SELECT @@version"
A következő parancs egy interaktív munkamenetet indít el a létrehozott példánysal:
sqlcmd query
Az alábbi parancs a létrehozott példányhoz való csatlakozáshoz használható kapcsolati sztringeket sorolja fel:
sqlcmd config connection-strings
A következő paranccsal távolítsa el a tárolót, ha már nincs rá szükség:
sqlcmd delete
Transact-SQL szkriptfájlok futtatása sqlcmd használatával
Adatbázisszkriptfájlok futtatásához használja az sqlcmd parancsot. A szkriptfájlok olyan szövegfájlok, amelyek T-SQL-utasítások, sqlcmd parancsok és szkriptelési változók kombinációját tartalmazzák. A változók szkriptelésével kapcsolatos további információkért lásd: Sqlcmd használata szkriptelési változókkal. Az sqlcmd a parancsfájlok utasításaival, parancsaival és szkriptelési változóival ugyanúgy működik, mint az interaktívan beírt utasítások és parancsok. A fő különbség az, hogy sqlcmd szünet nélkül olvassa át a bemeneti fájlt ahelyett, hogy arra vár, hogy a felhasználó beírja az utasításokat, parancsokat és szkriptelési változókat.
Adatbázisszkriptfájlokat különböző módokon hozhat létre:
Interaktívan felépíthet és hibakereshet egy T-SQL utasítássorozatot az SQL Server Management Studióban, majd a Lekérdezés ablak tartalmát szkriptfájlként mentheti.
T-SQL-utasításokat tartalmazó szövegfájl létrehozása szövegszerkesztővel, például Jegyzettömbbel.
Examples
A. Szkript futtatása sqlcmd használatával
Indítsa el a Jegyzettömbet, és írja be a következő T-SQL-utasításokat:
USE AdventureWorks2025;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Hozzon létre egy MyFolder nevű mappát, majd mentse a szkriptet fájlként MyScript.sql a mappába C:\MyFolder. Adja meg a következő parancsot a konzolon a szkript futtatásához és a kimenet beírásához MyOutput.txtMyFolder:
sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt
Itt van az eredmény.
Changed database context to 'AdventureWorks2025'.
BusinessEntityID FirstName LastName
----------------- ---------- ------------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
B. Az sqlcmd használata dedikált rendszergazdai kapcsolattal
Az alábbi példa az sqlcmd használatával csatlakozik egy blokkoló problémával rendelkező kiszolgálóhoz a dedikált rendszergazdai kapcsolat (DAC) használatával.
C:\Temp\>sqlcmd -S ServerName -A
1> SELECT session_id, blocking_session_id FROM sys.dm_exec_requests WHERE blocking_session_id <> 0;
2> GO
Itt van az eredmény.
session_id blocking_session_id
----------- --------------------`
62 64
(1 rows affected)
A blokkolási folyamat befejezéséhez használja sqlcmd.
1> KILL 64;
2> GO
C. Tárolt eljárás végrehajtása az sqlcmd használatával
Az alábbi példa bemutatja, hogyan hajthat végre tárolt eljárást sqlcmdhasználatával. Hozza létre a következő tárolt eljárást.
USE AdventureWorks2025;
GO
IF OBJECT_ID('dbo.ContactEmailAddress', 'P') IS NOT NULL
DROP PROCEDURE dbo.ContactEmailAddress;
GO
CREATE PROCEDURE dbo.ContactEmailAddress (
@FirstName NVARCHAR(50),
@LastName NVARCHAR(50)
)
AS
SET NOCOUNT ON;
SELECT EmailAddress
FROM Person.Person
WHERE FirstName = @FirstName
AND LastName = @LastName;
SET NOCOUNT OFF;
GO
Az sqlcmd parancssorba írja be a következő parancsot:
C:\Temp\sqlcmd
1> :Setvar FirstName Gustavo
1> :Setvar LastName Achong
1> EXEC dbo.ContactEmailAddress $(FirstName),$(LastName)
2> GO
EmailAddress
-----------------------------
gustavo0@adventure-works.com
D. Sqlcmd használata adatbázis-karbantartáshoz
Az alábbi példa bemutatja, hogyan használható sqlcmd egy adatbázis-karbantartási feladathoz. Hozzon létre C:\Temp\BackupTemplate.sql a következő kóddal.
USE master;
BACKUP DATABASE [$(db)] TO DISK = '$(bakfile)';
Az sqlcmd parancssorba írja be a következő kódot:
C:\Temp\>sqlcmd
1> :connect <server>
Sqlcmd: Successfully connected to server <server>.
1> :setvar db msdb
1> :setvar bakfile C:\Temp\msdb.bak
1> :r C:\Temp\BackupTemplate.sql
2> GO
Changed database context to 'master'.
Processed 688 pages for database 'msdb', file 'MSDBData' on file 2.
Processed 5 pages for database 'msdb', file 'MSDBLog' on file 2.
BACKUP DATABASE successfully processed 693 pages in 0.725 seconds (7.830 MB/sec)
E. Kód futtatása több példányon az sqlcmd használatával
A fájl alábbi kódja egy szkriptet jelenít meg, amely két példányhoz csatlakozik. Figyelje meg GO a második példányhoz való csatlakozás előtt.
:CONNECT <server>\,<instance1>
EXEC dbo.SomeProcedure
GO
:CONNECT <server>\,<instance2>
EXEC dbo.SomeProcedure
GO
F. XML-kimenet visszaadása
Az alábbi példa bemutatja, hogyan tér vissza az XML-kimenet formázatlan, folyamatos adatfolyamként.
C:\Temp\>sqlcmd -d AdventureWorks2025
1> :XML ON
1> SELECT TOP 3 FirstName + ' ' + LastName + ', '
2> FROM Person.Person
3> GO
Syed Abbas, Catherine Abel, Kim Abercrombie,
G. Az sqlcmd használata Windows-szkriptfájlban
Futtathat egy sqlcmd parancsot, például az sqlcmd -i C:\Temp\InputFile.txt -o C:\Temp\OutputFile.txt, egy .bat fájlban együtt a VBScript-kóddal. Ebben a forgatókönyvben ne használjon interaktív beállításokat. Az sqlcmd-et telepíteni kell a fájlt futtató .bat számítógépre.
Először hozza létre a következő négy fájlt a C:\Temp-as könyvtárban:
C:\Temp\badscript.sql
SELECT batch_1_this_is_an_error GO SELECT 'batch #2' GOC:\Temp\goodscript.sql
SELECT 'batch #1'; GO SELECT 'batch #2'; GOC:\Temp\returnvalue.sql
:exit(select 100)C:\Temp\windowsscript.bat
@echo off echo Running badscript.sql sqlcmd -i badscript.sql -b -o out.log if not errorlevel 1 goto next1 echo == An error occurred :next1 echo Running goodscript.sql sqlcmd -i goodscript.sql -b -o out.log if not errorlevel 1 goto next2 echo == An error occurred :next2 echo Running returnvalue.sql sqlcmd -i returnvalue.sql -o out.log echo SQLCMD returned %errorlevel% to the command shell :exit
Ezután futtassa C:\Temp\windowsscript.bat a konzolon:
C:\Temp\>windowsscript.bat
Running badscript.sql
== An error occurred
Running goodscript.sql
Running returnvalue.sql
SQLCMD returned 100 to the command shell
H. Az sqlcmd használata az Azure SQL Database titkosításának beállításához
Az SQL Database-adatokkal való kapcsolaton futtathatja az sqlcmd parancsot a titkosítás és a tanúsítványmegbízhatóság megadásához. Két sqlcmd lehetőség érhető el:
A
-Nkapcsoló egy titkosított kapcsolat ügyfélkérése. Ez a beállítás egyenértékű a ADO.NETENCRYPT = truebeállítással.A
-Ckapcsoló úgy konfigurálja az ügyfelet, hogy implicit módon megbízzon a kiszolgálói tanúsítványban, és ne érvényesítse azt. Ez a beállítás egyenértékű a ADO.NETTRUSTSERVERCERTIFICATE = truebeállítással.
Az SQL Database szolgáltatás nem támogatja az SQL Server-példányon elérhető összes SET lehetőséget. Az alábbi beállítások hibát jeleznek, ha a megfelelő SET beállítás értéke ON vagy OFF:
SET ANSI_DEFAULTSSET ANSI_NULLSSET REMOTE_PROC_TRANSACTIONSSET ANSI_NULL_DEFAULT
A következő SET beállítások elavultak. Nem adnak kivételt, de nem használhatók:
SET CONCAT_NULL_YIELDS_NULLSET ANSI_PADDINGSET QUERY_GOVERNOR_COST_LIMIT
Syntax
Az alábbi példák azokra az esetekre vonatkoznak, amelyekben az SQL Server natív ügyfélszolgáltatói beállításai a következők:
ForceProtocolEncryption = FalseTrust Server Certificate = No
Csatlakozás Windows-hitelesítő adatokkal és a kommunikáció titkosítása:
sqlcmd -E -N
Csatlakozás Windows-hitelesítő adatokkal és megbízhatósági kiszolgálói tanúsítvánnyal:
sqlcmd -E -C
Csatlakozás Windows-hitelesítő adatokkal, kommunikáció titkosítása és megbízhatósági kiszolgálói tanúsítvány használatával:
sqlcmd -E -N -C
Az alábbi példák azokra az esetekre vonatkoznak, amelyekben az SQL Server natív ügyfélszolgáltatói beállításai a következők:
ForceProtocolEncryption = TrueTrustServerCertificate = Yes
Csatlakozás Windows-hitelesítő adatokkal, kommunikáció titkosítása és megbízhatósági kiszolgálói tanúsítvány használatával:
sqlcmd -E
Csatlakozás Windows-hitelesítő adatokkal, kommunikáció titkosítása és megbízhatósági kiszolgálói tanúsítvány használatával:
sqlcmd -E -N
Csatlakozás Windows-hitelesítő adatokkal, kommunikáció titkosítása és megbízhatósági kiszolgálói tanúsítvány használatával:
sqlcmd -E -C
Csatlakozás Windows-hitelesítő adatokkal, kommunikáció titkosítása és megbízhatósági kiszolgálói tanúsítvány használatával:
sqlcmd -E -N -C
Ha a szolgáltató megadja a ForceProtocolEncryption = True, akkor a titkosítás akkor is engedélyezve lesz, ha Encrypt=No a kapcsolati sztringben.