Megosztás a következőn keresztül:


SQLCMD-szkriptek szerkesztése a Lekérdezésszerkesztővel

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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

  1. 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.

  2. 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.

  3. Az SQL-szerkesztő eszköztár Elérhető adatbázisok listájában válassza a AdventureWorks2025lehetőséget.

  4. A Lekérdezésszerkesztő ablakban írja be a következő Transact-SQL utasításokat és a !!DIR SQLCMD utasítást:

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. Nyomja 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.

  6. 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 a cmd.exe parancsfeldolgozóval hajtja végre. A !! utáni szöveg paraméterként lesz átadva cmd.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 GO parancs 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