用于禁用所有名称的触发器的Sql脚本具有AduitDelete

时间:2015-05-01 13:36:14

标签: sql-server-2008 tsql

我们的实时数据库有一个触发器,用于填充表,其中包含对数据库执行操作的内容。这对我们的开发db来说太过分了。有没有办法可以编写一个sql脚本来禁用名称中包含AuditDelete,AuditUpdate,AuditInsert的数据库中的所有触发器?如果它不符合此标准,则不得禁用它

1 个答案:

答案 0 :(得分:1)

您可以这样做的方法是让SQL返回要运行的查询。然后复制并粘贴它们并执行。一个好处是你可以看到它将禁用什么,并可以保存结果集,以便你确切知道你做了什么。

基本上,查询获取触发器名称及其所在表的名称。您可能需要调整此内容,因为我刚刚编写它以帮助您入门。

SELECT 
    'DISABLE TRIGGER ' + tr.name + ' ON ' + p.name
FROM 
    sys.objects tr
    JOIN sys.objects p on tr.parent_object_id = p.object_id
WHERE 
    tr.type = 'TR'
    AND (tr.name LIKE '%AuditDelete%' 
        OR tr.name LIKE '%AuditUpdate%' 
        OR tr.name LIKE '%AuditInsert%')

如果你运行上面的查询,当你看到结果集时会更有意义。