Возможно ли автоматическое принудительное включение режима 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.