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

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

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

Ответы

Ответ 1

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

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

Ответ 2

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

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

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