В SQL Server Management Studio что такое режим SQLCMD? - PullRequest
53 голосов
/ 01 февраля 2012

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

Ответы [ 3 ]

61 голосов
/ 26 декабря 2015

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

Что такое SQLCMD

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

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

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

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

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

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

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

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

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

 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]

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

25 голосов
/ 01 февраля 2012

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

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

Из MSDN - Редактирование сценариев SQLCMD с помощью редактора запросов :

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

В SQL Server Management Studio установите это через меню «Запрос» («Запрос» -> «Режим SQLCMD»).

13 голосов
/ 09 декабря 2014

«Сценарии SQLCMD используются, когда вам приходится обрабатывать системные команды Windows и операторы Transact-SQL в одном и том же сценарии.»

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

Ссылка: MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...