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)
Az SQL Server Management Studióban az adatbázismotor lekérdezésszerkesztőjével SQLCMD-szkriptekként írhat és szerkeszthet lekérdezéseket. SqlCMD-szkripteket használ windowsos rendszerparancsok és Transact-SQL utasítások feldolgozásakor ugyanabban a szkriptben.
SQLCMD mód
Ha az adatbázismotor lekérdezésszerkesztőjével szeretne SQLCMD-szkripteket írni vagy szerkeszteni, engedélyeznie kell az SQLCMD-szkriptelési módot. Alapértelmezés szerint az SQLCMD mód nem engedélyezett a Lekérdezésszerkesztőben. A szkript mód engedélyezéséhez válassza az SQLCMD mód ikont az eszköztáron, vagy válassza SQLCMD mód a Lekérdezés menüből.
Jegyzet
Az SQLCMD mód engedélyezése kikapcsolja az IntelliSense és a Transact-SQL hibakeresőt az adatbázismotor lekérdezésszerkesztőjében.
A Lekérdezésszerkesztő SQLCMD-szkriptjei ugyanazokat a funkciókat használhatják, mint Transact-SQL szkriptek. Ezek a funkciók a következők:
- Színkódolás
- Szkriptek végrehajtása
- Forrásvezérlő
- Szkriptek elemzése
- Bemutatóterv
SQLCMD-szkriptek engedélyezése a Lekérdezésszerkesztőben
Ha be szeretné kapcsolni az SQLCMD-szkriptelést egy aktív adatbázismotor lekérdezésszerkesztő ablakához, kövesse az alábbi eljárást.
Adatbázismotor lekérdezésszerkesztő ablakának váltása SQLCMD módra
Az Object Explorerben kattintson a jobb gombbal a kiszolgálóra, majd válassza Új lekérdezéslehetőséget egy új adatbázismotor lekérdezésszerkesztő ablakának megnyitásához.
A Lekérdezés menüben válassza SQLCMD módlehetőséget.
A Lekérdezésszerkesztő SQLCMD-utasításokat hajt végre a Lekérdezésszerkesztő kontextusában.
Az SQL-szerkesztő eszköztár Elérhető adatbázisok listájában válassza a
AdventureWorks2025lehetőséget.A Lekérdezésszerkesztő ablakban írja be a következő Transact-SQL utasításokat és a
!!DIRSQLCMD utasítást:SELECT DISTINCT Type FROM Sales.SpecialOffer; GO !!DIR GO SELECT ProductCategoryID, Name FROM Production.ProductCategory; GONyomja le az F5 billentyűt a vegyes Transact-SQL és MS-DOS utasítások szakasz végrehajtásához.
Figyelje meg a két SQL-eredménypanelt az első és a harmadik utasításból.
Az Találatok panelen válassza a Üzenetek lapot, hogy mindhárom utasításból megjelenjenek az üzenetek:
- (6 sor érintett)
- <A címtár információi>
- (4 sor érintett)
Fontos
A parancssorból végrehajtott sqlcmd segédprogram teljes körű interakciót engedélyez az operációs rendszerrel. Ha SQLCMD módban használja a Lekérdezésszerkesztőt, ügyeljen arra, hogy ne hajtsa végre az interaktív utasításokat. A Lekérdezésszerkesztő nem tud válaszolni az operációs rendszer kéréseire.
Az SQLCMD futtatásával kapcsolatos további információkért tekintse meg az sqlcmd segédprogramot, vagy tekintse meg az SQLCMD oktatóanyagot.
SQLCMD-szkriptek engedélyezése alapértelmezés szerint
Ha alapértelmezés szerint be szeretné kapcsolni az SQLCMD-szkriptelést, az Eszközök menüben válassza a Beállításoklehetőséget, bontsa ki lekérdezésvégrehajtási, és SQL Server, jelölje be az Általános lapot, majd jelölje be a Alapértelmezés szerint új lekérdezések megnyitása SQLCMD módban mezőben.
SQLCMD-szkriptek írása és szerkesztése
A szkriptelési mód engedélyezése után SQLCMD-parancsokat és Transact-SQL utasításokat írhat. A következő szabályok érvényesek:
Az SQLCMD-parancsnak egy sor első utasításának kell lennie.
Minden sorban csak egy SQLCMD-parancs engedélyezett.
Az SQLCMD-parancsokat megjegyzések vagy szabad terület előzheti meg.
A megjegyzéskarakterekben lévő SQLCMD-parancsok nem lesznek végrehajtva.
Az egysoros megjegyzéskarakterek két kötőjelből állnak (
--), és a sor elején kell megjelennie.Az operációsrendszer-parancsokat két felkiáltójelnek (
!!) kell megelőznie. A dupla felkiáltójelek parancs a felkiáltójeleket követő utasítást acmd.exeparancsfeldolgozóval hajtja végre. A!!utáni szöveg paraméterként lesz átadvacmd.exe, így az utolsó parancssor a következő lesz:"%SystemRoot%\system32\cmd.exe /c <text after !!>".Az SQLCMD-parancsok és a Transact-SQL közötti egyértelmű különbségtételhez minden SQLCMD-parancsot kettősponttal (
:) kell előtaggal előtagolni.A
GOparancs előszó nélkül vagy előtag nélkül is használható!!:Az adatbázismotor lekérdezésszerkesztője támogatja az SQLCMD-szkript részeként definiált környezeti változókat és változókat, de nem támogatja a beépített SQLCMD- vagy osql- változókat. Az SQL Server Management Studio esetérzékeny az SQLCMD-feldolgozás során a változók esetében. Például a PRINT '$(COMPUTERNAME)' eredménye a megfelelő, de a PRINT '$(ComputerName)' hibaüzenetet ad vissza.
Figyelem
Az SQL Server Management Studio a Microsoft .NET Framework SqlClientet használja a normál és SQLCMD módban történő végrehajtáshoz. A parancssorból való futtatáskor az SQLCMD az OLE DB-szolgáltatót használja. Mivel különböző alapértelmezett beállítások alkalmazhatók, eltérő viselkedést kaphat, amikor ugyanazt a lekérdezést hajtja végre az SQL Server Management Studio SQLCMD módban és az sqlcmd segédprogramban.
Támogatott SQLCMD-szintaxis
Az adatbázismotor lekérdezésszerkesztője a következő SQLCMD-szkriptszavak használatát támogatja:
[!!:]GO[count]!! <command>:exit(statement):Quit:r <filename>:setvar <var> <value>:connect server[\instance] [-l login_timeout] [-U user [-P password]]:on error [ignore|exit]:error <filename>|stderr|stdout:out <filename>|stderr|stdout
Jegyzet
Kimenet küldése az üzenetek lapjára a következőkhöz: :error és :out, valamint stderr és stdout.
A lekérdezésszerkesztő nem támogatja a fent nem felsorolt SQLCMD-parancsokat. Amikor egy SQLCMD kulcsszavakat tartalmazó szkriptet végrehajtanak, amelyek nem támogatottak, a Lekérdezésszerkesztő "Figyelmen kívül hagyva a parancsot <figyelmen kívül hagyott parancs>" üzenetet küldi a célnak minden egyes nem támogatott kulcsszó esetén. A szkript sikeresen fut, de a nem támogatott parancsok figyelmen kívül lesznek hagyva.
Figyelem
Mivel nem a parancssorból indítja el az SQLCMD-t, bizonyos korlátozások vonatkoznak a Lekérdezésszerkesztő SQLCMD módban való futtatásakor. Nem adhat meg parancssori paramétereket, például változókat, és mivel a Lekérdezésszerkesztő nem tud válaszolni az operációs rendszer kéréseire, ügyelnie kell arra, hogy ne hajtsa végre az interaktív utasításokat.
Színkódolás SQLCMD-szkriptekben
Ha engedélyezve van az SQLCMD-szkriptek használata, a szkriptek színkódoltak. A Transact-SQL kulcsszavak színkódolása változatlan marad. Az SQLCMD-parancsok árnyékolt háttérrel jelennek meg.
Példák
Az alábbi példa egy SQLCMD utasítással hoz létre egy testoutput.txtnevű kimeneti fájlt, két Transact-SQL SELECT utasítást hajt végre egy operációsrendszer-paranccsal (az aktuális könyvtár nyomtatásához). Az eredményül kapott fájl tartalmazza a DIR utasítás üzenetkimenetét, valamint a Transact-SQL utasítások eredménykimenetét.
:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version';
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name';
GO