Можно ли автоматически режим 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, который сделает это за вас на основе некоторого текста в файле скрипта.