Можно ли автоматически режим sqlcmd в скрипте?
мы используем Visual Studio Database Professional, и он широко использует переменные SQLCMD для различения сред при развертывании.
Я знаю, что есть несколько директив, доступных для настройки контекста (например :connect for server name). Есть ли способ в самом скрипте заставить режим SQLCMD для выполнения? Частью нашего процесса развертывания является проверка и выполнение сценариев DBA, и это будет хорошая сеть безопасности (поэтому мне не нужно напоминать им установите режим их выполнения в SQLCMD).
2 ответов
Не решение, но в качестве обходного пути вы можете встроить свой скрипт в какое-то предупреждение. этот пост вдохновил меня на этот код:
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
Это кажется невозможным. Я даже проверил режим проекта SSMS.
однако при создании проекта базы данных в BIDS сценарии перед развертыванием и после развертывания выполняются в режиме SQLCMD по умолчанию.
Я знаю, что это не тот ответ, который вы хотите, но это лучшее, что я могу дать вам без использования создания пользовательского плагина SSMS, который сделает это за вас на основе некоторого текста в файле скрипта.