Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Pomocí Editoru dotazů databázového stroje v aplikaci SQL Server Management Studio můžete psát a upravovat dotazy jako skripty SQLCMD. Skripty SQLCMD se používají při zpracování systémových příkazů systému Windows a Transact-SQL příkazů ve stejném skriptu.
Chcete-li použít Editor dotazů databázového stroje k zápisu nebo úpravě skriptů SQLCMD, musíte povolit režim skriptování SQLCMD. Ve výchozím nastavení není v Editoru dotazů povolený režim SQLCMD. 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 v nabídce Dotaz.
Poznámka
Povolení režimu SQLCMD vypne IntelliSense a ladicí program Transact-SQL v Editoru dotazů databázového stroje.
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í
Pokud chcete zapnout skriptování SQLCMD pro aktivní okno Editoru dotazů databázového stroje, použijte následující postup.
V Průzkumníku objektů klikněte pravým tlačítkem myši na server a pak vyberte Nový dotaz, a otevřete tak nové okno Editoru dotazů databázového stroje.
V nabídce dotazu vyberte režim SQLCMD.
Editor dotazů spouští příkazy SQLCMD v kontextu Editoru dotazů.
Na panelu nástrojů editoru SQL v seznamu Dostupné databáze vyberte
AdventureWorks2022
.V okně Editoru dotazů zadejte následující příkazy Transact-SQL a příkaz
!!DIR
SQLCMD:SELECT DISTINCT Type FROM Sales.SpecialOffer; GO !!DIR GO SELECT ProductCategoryID, Name FROM Production.ProductCategory; GO
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.
V podokně Výsledky vyberte záložku Zprávy, abyste si zobrazili zprávy ze všech tří příkazů.
- (6 řádků zasažených)
- <informace o adresáři>
- (4 řádky ovlivněny)
Důležité
Při spuštění z příkazového řádku nástroj sqlcmd umožňuje úplnou interakci s operačním systémem. Pokud používáte Editor dotazů v režimu SQLCMD, musíte být opatrní, 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, naleznete v tématu sqlcmd nástroj, nebo si projděte kurz SQLCMD.
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.
Po povolení režimu skriptování můžete psát příkazy SQLCMD a 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říkazy SQLCMD můžou předcházet komentáře nebo 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 zobrazit na začátku řádku.Příkazy operačního systému musí předcházet 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 po!!
se předá jako parametrcmd.exe
, takže poslední příkazový řádek se spustí jako:"%SystemRoot%\system32\cmd.exe /c <text after !!>"
.Aby bylo možné jasně rozlišovat mezi příkazy SQLCMD a jazykem Transact-SQL, musí být všechny příkazy SQLCMD předponou dvojtečky (
:
).Příkaz
GO
lze použít bez předmluvy nebo před příkazem!!:
Editor dotazů databázového stroje podporuje proměnné prostředí a proměnné definované jako součást skriptu SQLCMD, ale nepodporuje integrované proměnné SQLCMD ani osql proměnných. Zpracování SQLCMD v SQL Server Management Studio je citlivé na velikost písmen u proměnných. Například print '$(COMPUTERNAME)' vytvoří správný výsledek, ale PRINT '$(ComputerName)' vrátí chybu.
Upozornění
SQL Server Management Studio používá Microsoft .NET FrameworkSqlClient ke spouštění v běžném režimu a SQLCMD. Při spuštění z příkazového řádku používá SQLCMD zprostředkovatele OLE DB. Vzhledem k tomu, že se mohou použít různé výchozí možnosti, je možné získat různé chování při provádění stejného dotazu v režimu SQL Server Management Studio SQLCMD a v nástroji SQLCMD.
Editor dotazů databázového stroje 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]]
:on error [ignore|exit]
:error <filename>|stderr|stdout
:out <filename>|stderr|stdout
Poznámka
Odeslání výstupu na kartu zpráv pro :error
a :out
, stderr
a stdout
.
Příkazy SQLCMD, které nejsou uvedené výše, nejsou v Editoru dotazů podporované. Pokud se spustí skript obsahující nepodporovaná klíčová slova SQLCMD, editor dotazů odešle zprávu „Ignorování příkazu <, příkaz>ignorován“ do cíle pro každé nepodporované klíčové slovo. Skript se úspěšně spustí, ale nepodporované příkazy se ignorují.
Upozornění
Vzhledem k tomu, že nespouštíte SQLCMD z příkazového řádku, existují určitá omezení při spuštění Editoru dotazů v režimu SQLCMD. Nemůžete předat parametry příkazového řádku, jako jsou proměnné, a 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.
Při povoleném skriptování SQLCMD jsou skripty barevně kódované. Barevné kódování pro Transact-SQL klíčových slov zůstává stejné. Příkazy SQLCMD se zobrazují se stínovaným pozadím.
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 spolu s jedním příkazem operačního systému (pro tisk aktuálního adresáře). Výsledný soubor obsahuje výstup zprávy z příkazu DIR
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
- nástroj sqlcmd