Редактирование сценариев SQLCMD при помощи редактора запросов
Изменения: 17 июля 2006 г.
В редакторе запросов Microsoft SQL Server можно писать и редактировать запросы в виде сценариев SQLCMD. В сценариях SQLCMD в редакторе запросов можно использовать те же возможности, что и в любых других сценариях Transact-SQL. К таким средствам относятся:
- выделение цветом;
- выполнение сценариев;
- управление версиями;
- синтаксический анализ сценариев;
- план выполнения.
Включение режима сценариев SQLCMD в редакторе запросов
Чтобы использовать редактор запросов SQL Server для написания и редактирования сценариев SQLCMD, необходимо включить режим сценариев. По умолчанию режим сценариев в редакторе запросов отключен. Режим сценариев можно включить, нажав кнопку Режим SQLCMD на панели инструментов или выбрав пункт Режим SQLCMD в меню Запрос. В результате режим сценариев SQLCMD включается в текущем окне.
Переключение окна редактора запросов в режим SQLCMD
В обозревателе объектов щелкните правой кнопкой мыши свой сервер, а затем выберите команду Создать запрос, чтобы открыть новое окно редактора запросов.
В меню Запрос выберите команду Режим SQLCMD.
Редактор запросов выполняет инструкции sqlcmd в контексте редактора запросов.
На панели инструментов Редактор SQL в списке Доступные базы данных выберите пункт AdventureWorks.
В окне редактора запросов введите следующие две инструкции Transact-SQL и инструкцию
!!DIR
sqlcmd:SELECT DISTINCT Type FROM Sales.SpecialOffer; GO !!DIR GO SELECT ProductCategoryID, Name FROM Production.ProductCategory; GO
Нажмите клавишу F5, чтобы выполнить весь раздел, составленный из инструкций Transact-SQL и MS-DOS.
Обратите внимание на две области с результатами выполнения первой и третьей инструкций SQL.
В области Результаты перейдите на вкладку Сообщения, чтобы просмотреть сообщения всех трех инструкций.
- (Обработано строк: 6)
- <Данные каталога>
- (Обработано строк: 4)
![]() |
---|
При выполнении из командной строки программа 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.
![]() |
---|
Среда 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
![]() |
---|
Для :error и :out , stderr и stdout вывод направляется на вкладку сообщений. |
Команды SQLCMD, не перечисленные выше, редактором запросов не поддерживаются. Если выполняется сценарий, содержащий неподдерживаемые ключевые слова SQLCMD, для каждого неподдерживаемого ключевого слова редактор запросов отправляет в целевой объект сообщение «Команда <пропущенная_команда> не учитывается». Сценарий будет выполнен успешно, но неподдерживаемые команды не будут учитываться.
![]() |
---|
Так как команды 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 г. |
|
5 декабря 2005 г. |
|