Редактирование сценариев SQLCMD при помощи редактора запросов

Изменения: 17 июля 2006 г.

В редакторе запросов Microsoft SQL Server можно писать и редактировать запросы в виде сценариев SQLCMD. В сценариях SQLCMD в редакторе запросов можно использовать те же возможности, что и в любых других сценариях Transact-SQL. К таким средствам относятся:

  • выделение цветом;
  • выполнение сценариев;
  • управление версиями;
  • синтаксический анализ сценариев;
  • план выполнения.

Включение режима сценариев SQLCMD в редакторе запросов

Чтобы использовать редактор запросов SQL Server для написания и редактирования сценариев SQLCMD, необходимо включить режим сценариев. По умолчанию режим сценариев в редакторе запросов отключен. Режим сценариев можно включить, нажав кнопку Режим SQLCMD на панели инструментов или выбрав пункт Режим SQLCMD в меню Запрос. В результате режим сценариев SQLCMD включается в текущем окне.

Переключение окна редактора запросов в режим SQLCMD

  1. В обозревателе объектов щелкните правой кнопкой мыши свой сервер, а затем выберите команду Создать запрос, чтобы открыть новое окно редактора запросов.

  2. В меню Запрос выберите команду Режим SQLCMD.

    Редактор запросов выполняет инструкции sqlcmd в контексте редактора запросов.

  3. На панели инструментов Редактор SQL в списке Доступные базы данных выберите пункт AdventureWorks.

  4. В окне редактора запросов введите следующие две инструкции Transact-SQL и инструкцию !!DIRsqlcmd:

    SELECT DISTINCT Type FROM Sales.SpecialOffer;
    GO
    !!DIR
    GO
    SELECT ProductCategoryID, Name FROM Production.ProductCategory;
    GO
    
  5. Нажмите клавишу F5, чтобы выполнить весь раздел, составленный из инструкций Transact-SQL и MS-DOS.

    Обратите внимание на две области с результатами выполнения первой и третьей инструкций SQL.

  6. В области Результаты перейдите на вкладку Сообщения, чтобы просмотреть сообщения всех трех инструкций.

    • (Обработано строк: 6)
    • <Данные каталога>
    • (Обработано строк: 4)
ms174187.note(ru-ru,SQL.90).gifВажно!
При выполнении из командной строки программа sqlcmd позволяет добиться полного взаимодействия с операционной системой. Используя редактор запросов в Режиме 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.
ms174187.Caution(ru-ru,SQL.90).gifВнимание!
Среда SQL Server Management Studio для выполнения в обычном режиме и режиме SQLCMD использует Microsoft .NET SqlClient. При вызове из командной строки SQLCMD использует поставщика OLE DB. Так как могут применяться различные параметры по умолчанию, выполнение одного и того же запроса в среде SQL Server Management Studio в режиме 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]]

:on error [ignore|exit]

:error <filename>|stderr|stdout

:out <filename>|stderr|stdout

ms174187.note(ru-ru,SQL.90).gifПримечание.
Для :error и :out, stderr и stdout вывод направляется на вкладку сообщений.

Команды SQLCMD, не перечисленные выше, редактором запросов не поддерживаются. Если выполняется сценарий, содержащий неподдерживаемые ключевые слова SQLCMD, для каждого неподдерживаемого ключевого слова редактор запросов отправляет в целевой объект сообщение «Команда <пропущенная_команда> не учитывается». Сценарий будет выполнен успешно, но неподдерживаемые команды не будут учитываться.

ms174187.Caution(ru-ru,SQL.90).gifВнимание!
Так как команды 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

См. также

Другие ресурсы

Программа sqlcmd
Учебник по среде SQL Server Management Studio

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

17 июля 2006 г.

Добавления
  • Добавлена процедура переключения окна редактора запросов в режим SQLCMD.

5 декабря 2005 г.

Измененное содержимое
  • Исправлен синтаксис команды GO.
  • Добавлен пример.
  • Добавлено содержимое подраздела по режиму SQLCMD.