代码之家  ›  专栏  ›  技术社区  ›  Nicolas Webb

是否可以在脚本中自动强制使用sqlcmd模式?

  •  12
  • Nicolas Webb  · 技术社区  · 14 年前

    我们使用的是Visual Studio数据库专业版,它在部署时大量使用sqlcmd变量来区分环境。

    我知道有几个指令可用于设置上下文(比如:connect表示服务器名)。脚本本身是否有强制执行sqlcmd模式的方法?我们的部署过程的一部分是让DBA检查和执行脚本,这将是一个很好的安全网(所以我不必提醒他们将执行模式设置为sqlcmd)。

    2 回复  |  直到 10 年前
        1
  •  4
  •   Community CDub    8 年前

    不是解决方案,但作为解决方案,您可以将脚本嵌入到一些警告中。 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
    
        2
  •  0
  •   Wayne Arthurton    13 年前

    这似乎不可能。我甚至检查了SSMS项目模式。

    但是,如果在BIDS中创建数据库项目,则默认情况下,预部署和后部署脚本在sqlcmd模式下运行。

    我知道这不是你想要的答案,但是我能给你的最好的方法是通过创建一个自定义的SSMS插件,它可以基于脚本文件中的一些文本为你做这件事。