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

时间:2016-09-16 13:23:29

标签: sql-server visual-studio triggers ddl audit

因此,我们尝试在我们的数据库上实现DDL触发器来跟踪开发人员的DDL更改,并使其工作得很好。但是,我们的Visual Studio 2013/2015开发人员遇到了麻烦。当他们在Visual Studio中编辑表/ proc /任何内容时,它将禁用ddl触发器,进行更改并重新启用触发器,这会使触发器变得毫无意义。

我发现我可以创建一个SQL数据库项目,导航到Project>属性>调试>高级,取消选中"禁用和重新启用DDL触发器"。此设置存储在Project.SQLProj.User文件中。脚本将停止添加禁用/启用触发器部分。

然而,当devs只是转到Server Explorer / SQL Server对象资源管理器并以这种方式提取数据库表时,只要他们进行更改并运行" Update"并生成脚本,并且看到脚本中有Disable / reenable ddl触发器语句。我已经梳理了视觉工作室帮助文件,谷歌,我们的本地VS大师,似乎没有人知道这些动态/非项目范围脚本的设置在哪里。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

当您发布以下选项时使用。我不知道.user文件中的设置有

的影响
  • 如果您使用的是发布对话框窗口,请单击高级,然后取消选择

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

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

答案 1 :(得分:0)

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

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