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
sqlcmd parancssori segédprogram Transact-SQL (T-SQL) utasítások és szkriptek alkalmi, interaktív végrehajtásához és a T-SQL-szkriptelési feladatok automatizálásához. Ha interaktívan szeretné használni sqlcmd, vagy szkriptfájlokat szeretne létrehozni sqlcmd, ismernie kell a T-SQL-t. Az sqlcmd többféleképpen is használhatja. Például:
Írja be a parancssorból a T-SQL-utasításokat. A konzol visszaadja az eredményeket. Parancssori ablak megnyitásához írja be a
cmda Windows keresőmezőbe, és válassza parancssori megnyitásához. A parancssorba írja be asqlcmd, majd a kívánt beállítások listáját. Az sqlcmd által támogatott beállítások teljes listáját az sqlcmd sqlcmd segédprogramcímű cikkben 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 parancssorban is megjeleníthető.
SQLCMD mód az SQL Server Management Studio (SSMS) lekérdezésszerkesztőjében.
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, amelybe a sqlcmd a kimenetét helyezi.
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, és az sqlcmd windowsos hitelesítéssel 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 AdventureWorks2022.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 AdventureWorks2022.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
A sqlcmd segédprogram által támogatott beállítások listájának megtekintéséhez:
sqlcmd -?.
Transact-SQL utasítások interaktív futtatása sqlcmd használatával
Az sqlcmd segédprogrammal interaktív módon hajthat végre T-SQL-utasításokat egy parancssori ablakban. 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>
Amikor a parancsot bemeneti fájlok vagy lekérdezések nélkül hajtja végre, sqlcmd csatlakozik az SQL Server megadott példányához, majd egy új sort jelenít meg egy 1>, majd egy villogó aláhúzásjelet, amely az sqlcmd parancssornak a neve. 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 beírása Ctrl+C okozza, hogy a sqlcmd kilép.
Ctrl+C is használható az utasítás-gyorsítótár végrehajtásának leállítására egy GO parancs kiadása után.
Az interaktív munkamenetben megadott T-SQL-utasítások a :ED parancs és az sqlcmd parancssor beírásával szerkeszthetők. A szerkesztő megnyílik, é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 karakterek további előfeldolgozás nélkül használhatók, azzal a kivétellel, hogy az idézőjelek két egymást követő idézőjel megadásával szúrhatók be egy sztringbe. 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 egy példa arra, hogy mit lát sqlcmd interaktív futtatásakor.
Parancssori ablak megnyitásakor egy sor hasonlít a következőhöz:
C:\Temp\>
Ez azt jelenti, hogy a C:\Temp\ mappa az aktuális mappa, és ha megad egy fájlnevet, a Windows az adott mappában keresi a fájlt.
Írja be sqlcmd a helyi számítógépen található SQL Server alapértelmezett példányához való csatlakozáshoz, és a parancssori ablak tartalma a következő:
C:\Temp>sqlcmd
1>
Ez azt jelenti, hogy csatlakozott az SQL Server-példányhoz, és sqlcmd készen áll a T-SQL-utasítások és sqlcmd parancsok elfogadására. A 1> utáni villogó aláhúzás az sqlcmd parancssor, amely jelzi a beírt utasítások és parancsok megjelenítésének helyét. Most írja be USE AdventureWorks2022, és nyomja le Enter, majd írja be GO, majd nyomja le Enter. A Parancssor ablak tartalma a következő:
sqlcmd
USE AdventureWorks2022;
GO
Itt van az eredmény.
Changed database context to 'AdventureWorks2022'.
1>
Amikor megnyomja a Enterbillentyűt, az jelet ad a sqlcmd számára, hogy egy új sort kezdjen. Ha megnyomja az Enter billentyűt a GO beírása után, ez jelzi az sqlcmd számára, hogy küldje el a USE AdventureWorks2022 utasítást az SQL Server példányának.
sqlcmd ezután egy üzenetet ad vissza, amely jelzi, hogy a USE utasítás sikeresen befejeződött, és új 1> üzenetet jelenít meg egy új utasítás vagy parancs megadásához.
Az alábbi példa bemutatja, hogy mit tartalmaz a parancssori ablak, ha beír egy SELECT utasítást, egy GO-et a SELECTvégrehajtásához, valamint egy EXIT-at a kilépéshez a sqlcmd-ből.
USE AdventureWorks2022;
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
A kimenet létrehozása után sqlcmd alaphelyzetbe állítja az sqlcmd parancssort, és megjeleníti a 1>. A munkamenetből való kilépéshez írja be a EXIT kódot a 1> parancssorba. Most már bezárhatja a Parancssor ablakot egy másik EXIT parancs beírásával.
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.
sqlcmd (Go) egy create utasítást tesz elérhetővé, amely lehetővé teszi a tárolólemezkép és az SQL Server biztonsági mentésének megadását, így 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 2022 legújabb verziójával (16.x), majd visszaállítja a Wide World Importers mintaadatbázist:
sqlcmd create mssql --accept-eula --tag 2022-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 sqlcmd (Go) használatával kezelheti és lekérdezheti.
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 megnyitja az Azure Data Studiót, és automatikusan csatlakozik a létrehozási folyamat során visszaállított adatbázishoz:
sqlcmd open ads
Az alábbi parancs a létrehozott példányhoz való csatlakozáshoz használandó kapcsolati sztringeket sorolja fel:
sqlcmd config connection-strings
A következő paranccsal távolítható el a tároló, ha már nincs rá szükség:
sqlcmd delete
Transact-SQL szkriptfájlok futtatása sqlcmd használatával
Az sqlcmd használatával adatbázisszkriptfájlokat hajthat végre. 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. sqlcmd a szkriptfájlban lévő utasítások, parancsok és szkriptelési változók ugyanúgy működnek, 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.
Az adatbázisszkriptfájlok létrehozásának különböző módjai vannak:
Az SQL Server Management Studióban interaktívan létrehozhat és hibakeresést végezhet T-SQL-utasításokból, majd szkriptfájlként mentheti a Lekérdezés ablak tartalmát.
T-SQL-utasításokat tartalmazó szövegfájlt szövegszerkesztővel, például Jegyzettömbbel hozhat létre.
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 AdventureWorks2022;
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. Írja be a következő parancsot a parancssorba a szkript futtatásához, és a kimenet kerüljön a(z) MyOutput.txt és MyFolderhelyre.
sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt
Itt van az eredmény.
Changed database context to 'AdventureWorks2022'.
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éldában a sqlcmd eszközt használják egy blokkolási problémával küzdő szerverhez való kapcsolódáshoz a dedikált rendszergazdai kapcsolat (DAC) segítségével.
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 AdventureWorks2022;
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őket:
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 végrehajtá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. Vegye észre a GO-t 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
E. XML-kimenet visszaadása
Az alábbi példa azt mutatja be, hogy az XML-kimenet formázás nélkül, folyamatos streamben lesz visszaadva.
C:\Temp\>sqlcmd -d AdventureWorks2022
1> :XML ON
1> SELECT TOP 3 FirstName + ' ' + LastName + ', '
2> FROM Person.Person
3> GO
Syed Abbas, Catherine Abel, Kim Abercrombie,
F. Az sqlcmd használata Windows-szkriptfájlban
Egy sqlcmd parancs, például sqlcmd -i C:\Temp\InputFile.txt -o C:\Temp\OutputFile.txt, végrehajtható egy .bat fájlban a VBScripttel együtt. Ebben az esetben ne használjon interaktív beállításokat.
sqlcmd telepíteni kell a .bat fájlt végrehajtó 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 a parancssorban futtassa a C:\Temp\windowsscript.bat:
C:\Temp\>windowsscript.bat
Running badscript.sql
== An error occurred
Running goodscript.sql
Running returnvalue.sql
SQLCMD returned 100 to the command shell
G. Az sqlcmd használata az Azure SQL Database titkosításának beállításához
sqlcmd végrehajtható az SQL Database-adatokhoz való csatlakozáskor a titkosítás és a tanúsítványmegbízhatóság megadásához. Két sqlcmd lehetőség érhető el:
Az ügyfél a
-Nkapcsolót használja titkosított kapcsolat kéréséhez. Ez a beállítás egyenértékű a ADO.netENCRYPT = truebeállítással.Az ügyfél a
-Ckapcsolót arra használja, hogy implicit módon konfigurálja a megbízhatósági kiszolgáló tanúsítványát, é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 nem adnak kivételt, de nem használhatók. Nem javasolt használatuk:
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, a kommunikáció titkosítása és a megbízhatósági kiszolgáló tanúsítványa:
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, a kommunikáció titkosítása és a megbízhatósági kiszolgáló tanúsítványa:
sqlcmd -E
Csatlakozás Windows-hitelesítő adatokkal, a kommunikáció titkosítása és a megbízhatósági kiszolgáló tanúsítványa:
sqlcmd -E -N
Csatlakozás Windows-hitelesítő adatokkal, a kommunikáció titkosítása és a megbízhatósági kiszolgáló tanúsítványa:
sqlcmd -E -C
Csatlakozás Windows-hitelesítő adatokkal, a kommunikáció titkosítása és a megbízhatósági kiszolgáló tanúsítványa:
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.