我们正在使用Visual Studio数据库专业版,它大量使用sqlCMD变量来区分各种环境之间的部署.
我知道有几个可用于设置上下文的指令(例如:连接服务器名称).脚本本身有没有办法强制执行sqlCMD模式?我们的部署过程的一部分是让DBA检查并执行脚本,这将是一个不错的安全网(所以我不必提醒他们将执行模式设置为sqlCMD).
解决方法
不是一个解决方案,但作为一个解决方案,您可以嵌入您的脚本在一些警告.
This post启发我这段代码:
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