我们的实时数据库有一个触发器,用于填充表,其中包含对数据库执行操作的内容。这对我们的开发db来说太过分了。有没有办法可以编写一个sql脚本来禁用名称中包含AuditDelete,AuditUpdate,AuditInsert的数据库中的所有触发器?如果它不符合此标准,则不得禁用它
答案 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%')
如果你运行上面的查询,当你看到结果集时会更有意义。