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.
Az SQL Server Management Studio (SSMS) lekérdezésszerkesztőjével SQLCMD-szkriptekként írhat és szerkeszthet lekérdezéseket. AZ SQLCMD-szkriptek használatával feldolgozhatja a Windows rendszerparancsait és Transact-SQL utasításokat ugyanabban a szkriptben.
SQLCMD mód engedélyezése
Ha SQLCMD-szkripteket szeretne írni vagy szerkeszteni a lekérdezésszerkesztővel, engedélyeznie kell az SQLCMD-szkriptelési módot. Az SQLCMD mód alapértelmezés szerint nincs engedélyezve. A szkriptelési módot az eszköztár SQLCMD mód ikonjának kiválasztásával, vagy a Lekérdezés menü SQLCMD-módjának kiválasztásával engedélyezheti.
Megjegyzés:
Ha engedélyezi az SQLCMD módot, az IntelliSense és a Transact-SQL hibakereső ki van kapcsolva a lekérdezésszerkesztő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 Lekérdezésszerkesztő ablakhoz, kövesse az alábbi eljárást.
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 az Új lekérdezés lehetőséget egy új Lekérdezésszerkesztő ablak megnyitásához.
A Lekérdezés menüben válassza SQLCMD módlehetőséget.
Az SQLCMD-utasítások végrehajtása a lekérdezésszerkesztő kontextusában történik.
Az SQL-szerkesztő eszköztár Elérhető adatbázisok listájában válassza a
AdventureWorks2025lehetőséget.A lekérdezésszerkesztő ablakában írja be a következő Transact-SQL utasításokat és az SQLCMD utasítást
!!DIR: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 row(s) affected)<The directory information>(4 row(s) affected)
Fontos
Ha sqlcmd parancsot futtat a parancssorból, az lehetővé teszi az operációs rendszerrel való teljes interakciót. Ha a lekérdezésszerkesztőt SQLCMD módban használja, ü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 parancssorból való futtatásával kapcsolatos további információkért tekintse meg az sqlcmd segédprogramot.
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 is í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-parancsok előtt megjegyzéseket és szabad területet használhat.
A megjegyzéskarakterekben lévő SQLCMD-parancsok nem lesznek végrehajtva.
Az egysoros megjegyzéskarakterek két kötőjelből (
--) állnak, és egy sor elején kell megjelennie.Helyezze el az operációsrendszer-parancsok elé két felkiáltójelet (
!!). 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öveget paraméterként adják át acmd.exe-nak, így a végső parancssor a következőképpen hajtódik végre:"%SystemRoot%\system32\cmd.exe /c <text after !!>".Az SQLCMD-parancsok és a Transact-SQL közötti egyértelmű különbségtétel érdekében minden SQLCMD-parancs elé írjon egy kettőspontot (
:).A
GOparancs előszó és előtag!!:nélkül is használható.A lekérdezésszerkesztő 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 SSMS a kis- és nagybetűk megkülönböztetéseként dolgozza fel az SQLCMD-változókat. Például
PRINT '$(COMPUTERNAME)'a helyes eredményt hozza létre, dePRINT '$(ComputerName)'hibát ad vissza.
Caution
Az SSMS a .NET-kódtárat használja a SqlClient végrehajtáshoz normál és SQLCMD módban. Amikor a lekérdezést a parancssorból futtatja, az sqlcmd az OLE DB-szolgáltatót használja. Mivel különböző alapértelmezett beállítások vonatkozhatnak, előfordulhat, hogy eltérő viselkedés jelenik meg, amikor ugyanazt a lekérdezést SQLCMD módban hajtja végre az SSMS-ben, szemben az sqlcmd segédprogram SQLCMD módjával.
Támogatott SQLCMD-szintaxis
A lekérdezésszerkesztő a következő SQLCMD-szkript kulcsszavakat támogatja:
[!!:]GO[count]!! <command>:exit(statement):Quit:r <filename>:setvar <var> <value>-
:connect server[\instance] [-l login_timeout] [-U user [-P password]]1 :on error [ignore|exit]-
:error <filename>|stderr|stdout2 -
:out <filename>|stderr|stdout2
1 További információ a parancsról: :connectParancsok az sqlcmd segédprogramban.
2 A lekérdezésszerkesztő a kimenetet az Üzenetek lapra stderrstdoutküldi.
A lekérdezésszerkesztő nem támogatja az előző listában nem szereplő SQLCMD-parancsokat. Ha nem támogatott SQLCMD-kulcsszavakat tartalmazó szkriptet hajt végre, a lekérdezésszerkesztő figyelmen kívül hagyja a parancsot. Minden nem támogatott kulcsszó esetében a lekérdezésszerkesztő a következő üzenetet küldi a célhelyre:
Ignoring command <ignored_command>
Caution
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. Mivel a lekérdezésszerkesztő nem tud válaszolni az operációs rendszer kéréseire, óvatosnak kell lennie, hogy ne hajtsa végre az interaktív utasításokat.
Színkódolás SQLCMD-szkriptekben
Az SQLCMD-szkriptek engedélyezésekor 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ást használ egy kimeneti fájl testoutput.txtlétrehozásához. Két Transact-SQL SELECT utasítást és egy operációsrendszer-parancsot futtat, amelyek az aktuális könyvtárat nyomtatják. Az eredményként kapott fájl tartalmazza az utasítás üzenetkimenetét DIR és 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