sql - 是否可以在脚本中自动强制 SQLCMD 模式?

标签 sql sqlcmd ssms

我们使用的是 Visual Studio Database Professional,它在部署时大量使用 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

关于sql - 是否可以在脚本中自动强制 SQLCMD 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3441521/

相关文章:

sql - 帮助优化简单的 MySQL 查询

sql-server - Docker:如何在SQL Server Dockerfile中运行SQL脚本

sql-server - 无法通过 EF ExecuteSqlCommand 重建索引

sql - 从包含 max(column2) 的记录更新 column1 值的最佳方法是什么?

c# - 如何从文本框(Windows 窗体)检查主键是否存在于我的数据库中,c#

sql-server - 在 T-SQL 脚本中使用双引号在 SQLCMD 中会失败,但在 SSMO 中不会

sql-server - 没有选择要还原的备份集 SQL Server 2016

sql - 智能感知接受快捷方式

SQL Access 2010 - 三个表上的完全外连接

SQL 脚本的正则表达式前瞻/后视匹配