Изменение сценариев SQLCMD в редакторе Transact-SQL
При написании или изменении скриптов в редакторе Transact-SQL можно использовать одновременно команды Transact-SQL и SQLCMD, если предварительно включить режим SQLCMD.Дополнительные сведения см. в разделе Как включить режим SQLCMD в редакторе Transact-SQL.
Создание и изменение скриптов SQLCMD
Если необходимо включить команды SQLCMD и Transact-SQL в один скрипт, следует убедиться, что скрипт отвечает следующим требованиям.
Команды SQLCMD должны быть первыми инструкциями в строке.
В каждой строке разрешается только одна команда SQLCMD.
Перед командами SQLCMD могут идти комментарии или пробелы.
Символами однострочных комментариев являются два дефиса (--), они должны находиться в начале строки.Символы комментария предотвращают выполнение команд SQLCMD.
Перед каждой командой SQLCMD необходимо поставить двоеточие в начале строки, чтобы она отличалась от команд Transact-SQL.Исключениями являются команды exit и !!, для которых двоеточие является необязательным.
Можно использовать переменные среды и переменные, определенные в скрипте SQLCMD, однако нельзя использовать встроенные переменные SQLCMD.
Поддерживаемый синтаксис SQLCMD
Доступны следующие команды.
:r ИмяФайла
Проводит синтаксический анализ дополнительных инструкций Transact-SQL и команд SQLCMD из файла, указанного в FileName, в кэш инструкций. FileName считывается относительно начального каталога Visual Studio.Файл считывается и выполняется после обнаружения признака конца пакета.Можно указывать несколько команд :r.Файл включает любые команды SQLCMD, в том числе признак конца пакета, определенный в меню «Сервис, параметры».Можно использовать :r в скрипте выполняемом до или после развертывания, чтобы включить другие скрипты.:setvar Значение переменной
Определяет переменные скрипта.Переменные сценария имеют следующий формат: $(Variable).Имена переменных не зависят от регистра символов.Если переменная, определенная при помощи :Setvar, имеет такое же имя, что и переменная среды, переменная, определенная при помощи :setvar, имеет приоритет.Имена переменных не должны содержать пробелы.Имена переменных не могут иметь тот же формат, что и выражение переменной, например $(var).Если строковое значение переменной скрипта содержит пустые пространства, следует заключить значение в кавычки.Если значение для переменной скрипта не указано, переменная скрипта удаляется.:connect ИмяСервера[\ИмяЭкземпляра] [-l ВремяОжидания] [-U ИмяПользователя [-P Пароль]]
Подключается к экземпляру SQL Server и закрывает текущее соединение после определенного количества секунд, заданного параметром ВремяОжидания.Можно задать значение «-l 0» для неограниченного времени ожидания или положительное число секунд, например, "-l 30".Если для UserName и Password не указаны никакие параметры или переменные среды, для входа используется режим проверки подлинности Windows. При выполнении команды connect SQLCMD в редакторе Transact-SQL будет предложено подключиться к серверу баз данных с помощью окна Подключение к компоненту Database Engine.:on error [exit | ignore]
Установка действия, выполняемого при возникновении ошибки во время исполнения скрипта или пакета.Если используется параметр exit, выполнение останавливается с соответствующим значением ошибки.Если используется параметр ignore, редактор Transact-SQL не учитывает ошибку и продолжает выполнять пакет или скрипт.По умолчанию будет распечатано сообщение об ошибке.:out Имя файла | stderr | stdout
Перенаправление всех результатов запросов в файл, указанный как ИмяФайла, или на вкладку Сообщения.(В Visual Studio инструкции stderr и stdout отправляют вывод на вкладку Сообщения.) Команда out может встречаться в скрипте несколько раз.По умолчанию вывод передается на вкладку Сообщения.Если задано ИмяФайла, Visual Studio создает или открывает файл для получения результатов запроса.Если файл уже существует, он будет усечен до 0 байт до записи результата.:error ИмяФайла | stderr | stdout
Перенаправление всех результатов с ошибкой в файл, указанный как ИмяФайла, или на вкладку Сообщения.(В Visual Studio инструкции stderr и stdout отправляют вывод на вкладку Сообщения.) Команда error может встречаться в скрипте несколько раз.По умолчанию результат передается в stderr.Если задано ИмяФайла, Visual Studio создает или открывает файл для получения сообщений об ошибках.Если файл уже существует, он будет усечен до 0 байт до записи сообщения об ошибке.[:]exit
Останавливает текущий пакет без выполнения пакета или возвращения результата.[:]exit()
Выполняет пакет, затем завершает выполнение и не возвращает значения.[:]exit(Запрос)
Выполняет пакет (включая Запрос), возвращает результаты Запроса и останавливает выполнение.[:]!!Команда операционной системы
Выполняет команды операционной системы на компьютере, на котором запущен экземпляр Visual Studio.Чтобы выполнить команду операционной системы, начните строку двумя восклицательными знаками !! и далее введите команду операционной системы.
Примечание
Поскольку команды SQLCMD запускаются не из командной строки, при запуске редактора Transact-SQL в режиме SQLCMD действуют некоторые ограничения.Нельзя передавать параметры командной строки, например переменные. Кроме того, поскольку редактор Transact-SQL не поддерживает возможности реагировать на приглашения операционной системы, не следует выполнять интерактивные инструкции.
Команды SQLCMD, не перечисленные выше, редактором Transact-SQL не поддерживаются.Если выполняется крипт, содержащий неподдерживаемые ключевые слова SQLCMD, для каждого неподдерживаемого ключевого слова редактор Transact-SQL отправляет в целевой объект сообщение Command <unsupported command> is not supported. String was not processed.Скрипт будет выполнен успешно, но неподдерживаемые команды не будут учитываться.
Выделение цветом в скриптах SQLCMD
Если включен Режим SQLCMD, скрипты выделяются разными цветами.Выделение цветом ключевых слов Transact-SQL остается таким же.Команды SQLCMD представлены с затененным фоном.
Примеры
В следующем примере используются инструкции SQLCMD для создания папки результатов с именем c:\TempSqlcmdOutput и выходного файла с именем testoutput.txt.В примере также выполняются две инструкции Transact-SQL SELECT, а также команда SQLCMD, чтобы распечатать текущий каталог программы Visual Studio.Итоговый файл содержит информацию о результатах выполнения инструкции DIR, которая следует за результатами выполнения инструкций Transact-SQL.Для данного примера предполагается, что соединение с экземпляром SQL Server уже установлено, а Режим SQLCMD уже включен.
!!mkdir c:\TempSqlcmdOutput
:out c:\TempSqlCmdOutput\testoutput.txt
select @@VERSION as 'Server Version'
!!dir
GO
select @@SERVERNAME as 'Server Name'
GO 4
См. также
Задания
Как установить параметры для выполнения запросов и результатов