Поделиться через


Изменение сценариев 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

См. также

Задания

Как выполнить запрос

Как установить параметры для выполнения запросов и результатов

Основные понятия

Общие сведения о результатах запроса