Sql-Server
如何刪除單個數據庫中的所有觸發器?
我有一個包含 104 個觸發器的數據庫,有沒有辦法用一個命令從一個名為“system_db_audits”的數據庫中刪除所有觸發器?
您可以使用動態 SQL 和
sys.triggers
DMV 來建構您可以執行的查詢。
is_ms_shipped
不包括 SQL Server 附帶的任何觸發器。
parent_class_desc
過濾對象級別的觸發器,而不是數據庫級別。一旦您對輸出感到滿意,請將其更改為
EXEC
USE system_db_audits; GO DECLARE @sql NVARCHAR(MAX) = N''; SELECT @sql += N'DROP TRIGGER ' + QUOTENAME(OBJECT_SCHEMA_NAME(t.object_id)) + N'.' + QUOTENAME(t.name) + N'; ' + NCHAR(13) FROM sys.triggers AS t WHERE t.is_ms_shipped = 0 AND t.parent_class_desc = N'OBJECT_OR_COLUMN'; PRINT @sql;