Можно ли автоматически включить режим SQLCMD в скрипте? - PullRequest
12 голосов
/ 09 августа 2010

Мы используем Visual Studio Database Professional, и он интенсивно использует переменные SQLCMD, чтобы различать среды при развертывании.

Я знаю, что есть несколько директив для настройки контекста (например: соединение для имени сервера).Есть ли способ в самом скрипте заставить режим SQLCMD для выполнения?Часть нашего процесса развертывания состоит в том, чтобы администратор БД проверял и выполнял сценарии, и это было бы хорошей защитной сеткой (поэтому мне не нужно напоминать им, чтобы они установили режим выполнения в SQLCMD).

Ответы [ 2 ]

4 голосов
/ 15 ноября 2011

Не решение, но в качестве обходного пути вы можете встроить свой скрипт в какое-то предупреждение. Этот пост вдохновил меня на этот код:

SET NOEXEC OFF; -- previous execution may have toggled it
:setvar IsSqlCmdEnabled "True"
GO
IF ('$(IsSqlCmdEnabled)' = '$' + '(IsSqlCmdEnabled)')
BEGIN
  PRINT('Use SqlCmd-mode!!');
  SET NOEXEC ON;
  -- RAISERROR ('This script must be run in SQLCMD mode.', 20, 1) WITH LOG
END
ELSE
BEGIN
  PRINT('Using SqlCmd-mode')
  -- insert the code you really want to execute:
  -- ...
END
SET NOEXEC OFF; -- do not disable next execution in this session
0 голосов
/ 06 октября 2011

Это не представляется возможным. Я даже проверил режим проекта SSMS.

Однако, если вы создаете проект базы данных в BIDS, сценарии перед развертыванием и после развертывания по умолчанию запускаются в режиме SQLCMD.

Я знаю, что это не тот ответ, который вам нужен, но это лучшее, что я могу вам дать, не прибегая к созданию собственного плагина SSMS, который бы сделал это для вас на основе некоторого текста в файле сценария.

...