Подтвердить что ты не робот

В SQL Server Management Studio используется режим SQLCMD?

В SQL Server Management Studio я хотел бы знать, что такое режим SQLCMD?

4b9b3361

Ответ 1

Точно, как это звучит.

Это режим, который позволяет создавать сценарии SQLCMD.

От MSDN - Редактирование скриптов SQLCMD с редактором запросов:

Чтобы использовать редактор запросов Engine Engine для написания или редактирования сценариев SQLCMD, вы должны включить режим сценариев SQLCMD.

В SQL Server Management Studio установите это в меню Query (Query → SQLCMD Mode).

Ответ 2

Я сделал еще несколько исследований, поэтому я понял это, чтобы расширить то, что было написано до сих пор:

Что такое SQLCMD

SQLCMD.exe - консольная утилита, включенная в установку SQL Server 2005 и выше. Обычно вы можете найти его на пути, например c:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE.

Это простая среда сценариев, которая позволяет автоматизировать задачи, связанные с SQL-сервером. Например, вы можете написать и выполнить script, который будет подключаться к определенному экземпляру SQL Server, выполнить сценарии из заданного каталога в этом соединении и сохранить вывод в указанном файле.

Invoke-Sqlcmd cmdlet был представлен с SQL Server 2008 как средство для замены этого инструмента стандартизованным подходом на основе Powershell, сохраняющим большую часть исходного синтаксиса и функциональность.

Что такое режим SQLCMD в SSMS

В SSMS режим SQLCMD - это режим выполнения script, который имитирует среду sqlcmd.exe и, следовательно, принимает некоторые команды, которые не являются частью языка T-SQL. В отличие от sqlcmd.exe, он связывается с базой данных с помощью SqlClient (аналогично SSMS), а не поставщиком данных ODBC, поэтому в некоторых аспектах он может иметь другое поведение, чем sqlcmd.exe.

Выполнение сценариев в режиме SQLCMD позволяет использовать команды, типичные для среды sqlcmd.exe. Тем не менее, нет поддержки IntelliSense или отладки для режима SQLCMD, поэтому поддержка скриптов, которые смешивают чистый T-SQL с кодом, специфичным для SQLCMD, может быть болью. Поэтому его следует использовать только тогда, когда это необходимо.

Пример использования

Предположим, что компания имеет соглашение об именах для баз данных, которые включают среду в имени, например: MyDb_ Prod, MyDb_ Тест, MyDb_ Dev. Это соглашение может использоваться для минимизации вероятности ошибок.

Когда разработчик записывает T-SQL script, он должен выполняться в разных средах в процессе развертывания/тестирования, для чего потребуется много версий кода:

 SELECT *
 FROM [MyDb_Dev].[dbo].[MyTable1] -- MyDb_Dev -> MyDb_Test -> MyDb_Prod

Вместо этого мы можем предположить, что имя базы данных будет предоставлено как переменная SQLCMD в процессе развертывания и будет иметь точно такой же файл, который будет развернут во всех средах:

 -- :setvar databaseName "MyDb_Dev" -- uncomment for testing in SSMS

 SELECT *
 FROM [$(databaseName)].[dbo].[MyTable1]

(в этом простом примере имя базы данных может быть вообще опущено, но если у вас есть кросс-базы данных, необходимо использовать имя базы данных)

Ответ 3

"Вы используете сценарии SQLCMD, когда вам нужно обрабатывать команды Windows System и инструкции Transact-SQL в том же script."

"По умолчанию режим SQLCMD не включен в Редакторе запросов. Вы можете включить режим сценариев, щелкнув значок режима SQLCMD на панели инструментов или выбрав режим SQLCMD в меню" Query ".

Ссылка: MSDN