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.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database a Microsoft Fabric
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
cmd
a 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.Jegyzet
A
-E
beállítás az alapértelmezett, é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>
Jegyzet
Az előző példában a
-E
nincs megadva, mert ez az alapértelmezett, és 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>
vagy
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.txt
Csatlakozzon 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>
Tipp
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
, -Z
vagy -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 SELECT
vé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íthatja 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
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.
Példák
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 MyFolder
helyre.
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' GO
C:\Temp\goodscript.sql
SELECT 'batch #1'; GO SELECT 'batch #2'; GO
C:\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
-N
kapcsolót használja titkosított kapcsolat kéréséhez. Ez a beállítás egyenértékű a ADO.netENCRYPT = true
beállítással.Az ügyfél a
-C
kapcsoló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 = true
beá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_DEFAULTS
SET ANSI_NULLS
SET REMOTE_PROC_TRANSACTIONS
SET ANSI_NULL_DEFAULT
A következő SET-beállítások nem adnak kivételt, de nem használhatók. Ezeket lefokozottnak nyilvánították.
SET CONCAT_NULL_YIELDS_NULL
SET ANSI_PADDING
SET QUERY_GOVERNOR_COST_LIMIT
Szintaxis
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 = False
Trust 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 = True
TrustServerCertificate = 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.