如何自定义 SQL 由 Visual Studio 生成的脚本

How to customize SQL Scripts generated by Visual Studio

因此,我们正尝试在我们的数据库上实施 DDL 触发器,以便为我们的开发人员跟踪 DDL 更改,并且效果很好。但是,我们 运行 与我们的 Visual Studio 2013/2015 开发人员发生了冲突。当他们从 Visual Studio 中编辑 table/proc/anything 时,它将禁用 ddl 触发器,进行更改,然后重新启用触发器,这使得触发器毫无意义。

我发现我可以创建一个 SQL 数据库项目,导航到项目 > 属性 > 调试 > 高级,然后取消选中 "Disable and Reenable DDL Triggers"。此设置存储在 Project.SQLProj.User 文件中。并且脚本将停止添加 Disable/Enable 触发器部分。

但是,当开发人员只是转到服务器 Explorer/SQL 服务器对象资源管理器并以这种方式调出数据库 table 时,只要他们进行更改并且 运行 "Update" 并生成脚本,你瞧,脚本中有 Disable/reenable ddl 触发器语句。我梳理了 visual studio 帮助文件、谷歌、我们当地的 VS 专家,但似乎没有人知道 fly/non-project 作用域脚本上的这些设置在哪里。任何帮助将不胜感激。

发布时会使用以下选项。我不知道 .user 文件中设置的影响

  • 如果您使用的是发布对话框 window 然后点击高级然后取消选择

    Disable And Reenable Ddl Triggers
    
  • 如果您使用的是类似 yourDb.publish.xml 的发布配置文件,请将其添加到您的文件中

    <DisableAndReenableDdlTriggers>False</DisableAndReenableDdlTriggers>
    
  • 如果您使用 SQLPackage.exe 执行此操作,您还可以指定 /p:DisableAndReenableDdlTriggers=false

好吧,我找到了解决该问题的方法。我仍然无法让 Visual Studio 默认不禁用触发器,但我通过创建服务器级 DDL 触发器解决了这个问题。

服务器级 DDL 触发器将审计服务器和数据库 DDL,并且不会在 VS 发出禁用数据库 ddl 触发器语句时被禁用。