Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте редактор запросов в SQL Server Management Studio (SSMS) для записи и редактирования запросов в виде скриптов SQLCMD. Скрипты SQLCMD можно использовать для обработки системных команд Windows и Transact-SQL инструкций в том же скрипте.
Включение режима SQLCMD
Чтобы использовать редактор запросов для записи или редактирования скриптов SQLCMD, необходимо включить режим скриптов SQLCMD. Режим SQLCMD по умолчанию не включен. Вы можете включить режим сценариев, выбрав значок режима SQLCMD на панели инструментов или выбрав режим SQLCMD в меню "Запрос ".
Замечание
При включении режима SQLCMD IntelliSense и отладчика Transact-SQL отключены в редакторе запросов.
Скрипты SQLCMD в редакторе запросов могут использовать те же функции, что и все Transact-SQL скрипты. К этим функциям относятся:
- цветовое кодирование,
- Выполнение скриптов
- Управление исходным кодом
- Анализ скриптов
- План показа
Включение скриптов SQLCMD в Редактор запросов
Чтобы включить скрипты SQLCMD для активного окна редактора запросов, используйте следующую процедуру.
Переключение окна редактора запросов на режим SQLCMD
В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите новый запрос , чтобы открыть новое окно редактора запросов.
В меню "Запрос" выберите режим SQLCMD.
Инструкции SQLCMD выполняются в контексте редактора запросов.
На панели инструментов Редактора SQL в списке Доступные базы данных выберите пункт
AdventureWorks2025.В окне редактора запросов введите следующие операторы Transact-SQL и инструкцию
!!DIRSQLCMD:SELECT DISTINCT Type FROM Sales.SpecialOffer; GO !!DIR GO SELECT ProductCategoryID, Name FROM Production.ProductCategory; GOНажмите клавишу F5, чтобы выполнить смешанные инструкции Transact-SQL и MS-DOS.
Обратите внимание на две панели с результатами выполнения первой и третьей инструкций SQL.
В области Результаты выберите вкладку Сообщения, чтобы просмотреть сообщения всех трех инструкций:
(6 row(s) affected)<The directory information>(4 row(s) affected)
Это важно
При запуске sqlcmd из командной строки он позволяет полностью взаимодействовать с операционной системой. При использовании редактора запросов в режиме SQLCMD не следует выполнять интерактивные инструкции. Редактор запросов не может отвечать на запросы операционной системы. Дополнительные сведения о том, как запустить SQLCMD из командной строки, см. в служебной программе sqlcmd.
Включение скриптов SQLCMD по умолчанию
Чтобы включить скрипты SQLCMD по умолчанию, в меню "Инструменты" выберите пункт "Параметры", разверните узлы Выполнение запросов и SQL Server, выберите страницу "Общие" и установите флажок "По умолчанию открывать новые запросы в режиме SQLCMD".
Написание и изменение скриптов SQLCMD
После включения режима написания сценариев можно записывать как команды SQLCMD, так и операторы Transact-SQL. Применяются следующие правила:
команда SQLCMD должна быть первой инструкцией в строке;
в каждой строке разрешается только одна команда SQLCMD;
Комментарии и пробелы можно использовать перед командами SQLCMD.
Команды SQLCMD в символах комментариев не выполняются.
Символы комментариев в одной строке являются двумя дефисами (
--) и должны отображаться в начале строки.Добавьте два восклицательных знака (
!!) перед командами операционной системы. Два восклицательных знака означают, что следующая за ними команда должна выполняться с помощью командного процессораcmd.exe. Текст после!!передается в качестве параметра вcmd.exe, поэтому окончательная командная строка выполняется следующим образом:"%SystemRoot%\system32\cmd.exe /c <text after !!>".Чтобы четко различать команды SQLCMD и Transact-SQL, добавьте ко всем командам SQLCMD двоеточие (
:).Команда
GOможет использоваться без предварительного слова или с предшествующей командой!!:.Редактор запросов поддерживает переменные среды и переменные, которые определяются как часть скрипта SQLCMD, но не поддерживает встроенные переменные SQLCMD или osql . SSMS обрабатывает переменные SQLCMD как конфиденциальные регистры. Например,
PRINT '$(COMPUTERNAME)'выдает правильный результат, ноPRINT '$(ComputerName)'возвращает ошибку.
Caution
SSMS использует библиотеку SqlClient .NET для выполнения в обычном и SQLCMD режиме. При выполнении запроса из командной строки, sqlcmd использует поставщик OLE DB. Так как различные параметры по умолчанию могут применяться, при выполнении одного и того же запроса в режиме SQLCMD в SSMS по сравнению с режимом SQLCMD в служебной программе sqlcmd может отображаться другое поведение.
Поддерживаемый синтаксис SQLCMD
Редактор запросов поддерживает следующие ключевые слова скрипта 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|stdout2 -
:out <filename>|stderr|stdout2
1 Дополнительные сведения о команде см. в разделе "Команды" :connectв служебной программе sqlcmd.
2 Редактор запросов отправляет выходные данные на вкладку "Сообщения"stderr и stdout.
Редактор запросов не поддерживает команды SQLCMD, которые не включены в предыдущий список. При выполнении скрипта, содержащего неподдерживаемые ключевые слова SQLCMD, редактор запросов игнорирует команду. Для каждого неподдерживаемого ключевого слова редактор запросов отправляет следующее сообщение в место назначения:
Ignoring command <ignored_command>
Caution
Так как вы не запускаете SQLCMD из командной строки, при запуске редактора запросов в режиме SQLCMD существуют некоторые ограничения. Невозможно передать параметры командной строки, такие как переменные. Кроме того, так как редактор запросов не может отвечать на запросы операционной системы, необходимо быть осторожным, чтобы не выполнять интерактивные инструкции.
Кодирование цветов в скриптах SQLCMD
При включении скриптов SQLCMD скрипты кодируются цветом. Кодирование цвета для ключевых слов Transact-SQL остается неизменным. Команды SQLCMD отображаются с затеняемого фона.
Примеры
В следующем примере используется инструкция SQLCMD для создания выходного файла с именем testoutput.txt. Он выполняет две инструкции Transact-SQL SELECT и одну команду операционной системы, которая выводит текущий каталог. Результирующий файл содержит выходные данные сообщения из инструкции DIR и результаты из инструкций Transact-SQL.
:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version';
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name';
GO