Sdílet prostřednictvím


Úprava skriptů SQLCMD pomocí Editoru dotazů

Pomocí editoru dotazů v aplikaci SQL Server Management Studio (SSMS) můžete psát a upravovat dotazy jako skripty SQLCMD. Skripty SQLCMD můžete použít ke zpracování systémových příkazů systému Windows a Transact-SQL příkazů ve stejném skriptu.

Povolení režimu SQLCMD

Chcete-li použít editor dotazů k zápisu nebo úpravě skriptů SQLCMD, musíte povolit režim skriptování SQLCMD. Režim SQLCMD není ve výchozím nastavení povolený. Režim skriptování můžete povolit výběrem ikony režimu SQLCMD na panelu nástrojů nebo výběrem režimu SQLCMD z nabídky Dotaz .

Poznámka:

Když povolíte režim SQLCMD, technologie IntelliSense a ladicí program Transact-SQL jsou v editoru dotazů vypnuté.

Skripty SQLCMD v editoru dotazů můžou používat stejné funkce, které používají všechny Transact-SQL skripty. Mezi tyto funkce patří:

  • Barevné kódování
  • Spouštění skriptů
  • Správa zdrojového kódu
  • Analýza skriptů
  • Plán zobrazení

Povolení skriptování SQLCMD v Editoru dotazů

Pokud chcete zapnout skriptování SQLCMD pro aktivní okno Editoru dotazů, použijte následující postup.

Přepnutí okna editoru dotazů do režimu SQLCMD

  1. V Průzkumníku objektů klikněte pravým tlačítkem myši na server a potom vyberte Nový dotaz , aby se otevřelo nové okno Editoru dotazů.

  2. V nabídce dotazu vyberte režim SQLCMD.

    Příkazy SQLCMD se spouští v kontextu editoru dotazů.

  3. Na panelu nástrojů editoru SQL v seznamu Dostupné databáze vyberte AdventureWorks2025.

  4. V okně editoru dotazů zadejte následující příkazy Transact-SQL a !!DIR příkaz SQLCMD:

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. Stisknutím klávesy F5 spusťte sekci smíšených příkazů Transact-SQL a MS-DOS.

    Všimněte si dvou podokna výsledků SQL z prvního a třetího příkazu.

  6. V podokně Výsledky vyberte záložku Zprávy, abyste si zobrazili zprávy ze všech tří příkazů.

    • (6 row(s) affected)
    • <The directory information>
    • (4 row(s) affected)

Důležité

Když spustíte sqlcmd z příkazového řádku, povolí úplnou interakci s operačním systémem. Při použití editoru dotazů v režimu SQLCMD dávejte pozor, abyste nespustí interaktivní příkazy. Editor dotazů nemůže reagovat na výzvy operačního systému. Další informace o tom, jak spustit SQLCMD z příkazového řádku, naleznete v nástroji sqlcmd.

Povolení skriptování SQLCMD ve výchozím nastavení

Pokud chcete ve výchozím nastavení zapnout skriptování SQLCMD, v nabídce Nástroje vyberte Možnosti, rozbalte položku Spouštění dotazůa SQL Server, vyberte stránku Obecné a potom zaškrtněte políčko Otevřít nové dotazy v režimu SQLCMD.

Psaní a úpravy skriptů SQLCMD

Po povolení režimu skriptování můžete psát příkazy SQLCMD i příkazy Transact-SQL. Platí následující pravidla:

  • Příkazy SQLCMD musí být prvním příkazem na řádku.

  • Na každém řádku je povolen pouze jeden příkaz SQLCMD.

  • Před příkazy SQLCMD můžete použít komentáře a prázdné znaky.

  • Příkazy SQLCMD uzavřené v komentářových znacích se nespouštějí.

  • Jednořádkové znaky komentáře jsou dvě pomlčky (--) a musí se zobrazovat na začátku řádku.

  • Předpona příkazů operačního systému se dvěma vykřičníky (!!). Příkaz s dvojitými vykřičníky způsobí, že příkaz, který následuje za nimi, se provede pomocí procesoru příkazů cmd.exe. Text za !! je předán jako parametr do cmd.exe, takže konečný příkazový řádek se spustí jako: "%SystemRoot%\system32\cmd.exe /c <text after !!>".

  • Pokud chcete jasně rozlišovat mezi příkazy SQLCMD a jazykem Transact-SQL, předponujte všechny příkazy SQLCMD dvojtečku (:).

  • Příkaz GO lze použít bez předmluvy nebo před příkazem !!:.

  • Editor dotazů podporuje proměnné prostředí a proměnné, které definujete jako součást skriptu SQLCMD, ale nepodporuje integrované proměnné SQLCMD ani osql . SSMS zpracovává proměnné SQLCMD s rozlišením velikosti písmen. Například PRINT '$(COMPUTERNAME)' vytvoří správný výsledek, ale PRINT '$(ComputerName)' vrátí chybu.

Upozornění

SSMS používá knihovnu SqlClient .NET ke spouštění v běžném režimu a v režimu SQLCMD. Když spustíte dotaz z příkazového řádku, sqlcmd použije zprostředkovatele OLE DB. Vzhledem k tomu, že se můžou použít různé výchozí možnosti, může se při provádění stejného dotazu v režimu SQLCMD uvnitř SSMS zobrazit odlišné chování ve srovnání s režimem SQLCMD v utilitě sqlcmd.

Podporovaná syntaxe SQLCMD

Editor dotazů podporuje následující klíčová slova skriptu SQLCMD:

  • [!!:]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|stdout 2
  • :out <filename>|stderr|stdout 2

1 Další informace o :connect příkazu naleznete v příkazy v nástroji sqlcmd.

2 Editor dotazů odešle výstup na kartu Zprávy pro stderr a stdout.

Editor dotazů nepodporuje příkazy SQLCMD, které nejsou zahrnuty do předchozího seznamu. Když spustíte skript, který obsahuje nepodporovaná klíčová slova SQLCMD, editor dotazů tento příkaz ignoruje. Pro každé nepodporované klíčové slovo odešle editor dotazů do cíle následující zprávu:

Ignoring command <ignored_command>

Upozornění

Vzhledem k tomu, že sqlCMD nespustíte z příkazového řádku, existují určitá omezení při spuštění Editoru dotazů v režimu SQLCMD. Parametry příkazového řádku, jako jsou proměnné, nemůžete předávat. Protože editor dotazů nemůže reagovat na výzvy operačního systému, musíte být opatrní, abyste nespustí interaktivní příkazy.

Barevné kódování ve skriptech SQLCMD

Když povolíte skriptování SQLCMD, skripty se barevně zakódují. Barevné kódování pro Transact-SQL klíčová slova zůstává stejné. Příkazy SQLCMD se zobrazí se stínovaným pozadím.

Examples

Následující příklad používá příkaz SQLCMD k vytvoření výstupního souboru s názvem testoutput.txt. Spustí dva příkazy Transact-SQL SELECT a jeden příkaz operačního systému, který vytiskne aktuální adresář. Výsledný soubor obsahuje výstup zprávy z DIR příkazu a výstup výsledků z příkazů Transact-SQL.

:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version';
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name';
GO