Có thể sử dụng tập lệnh dưới đây để tắt tất cả các trình kích hoạt trong Cơ sở dữ liệu SQL Server.
SỬ DỤNG [Cơ sở dữ liệu]
ĐI
DECLARE @TriggerName AS VARCHAR (500)
DECLARE @TableName AS VARCHAR (500)
DECLARE @SchemaName AS VARCHAR (100)
- Tắt tất cả trình kích hoạt trong cơ sở dữ liệu trong SQL Server
DECLARE DisableTrigger CURSOR FOR
CHỌN TBL.name AS TableName,
Schema_name (TBL.schema_id) AS Table_SchemaName,
TRG .name AS TriggerName
TỪ sys.triggers TRG
INNER THAM GIA sys.tables TBL
TRÊN TBL.OBJECT_ID =TRG.parent_id
VÀ TRG.is_disabled =0
VÀ TBL.is_ms_shipped =0
MỞ DisableTrigger
TÌM KIẾM Tiếp theo TỪ DisableTrigger VÀO @ TableName, @ SchemaName, @ TriggerName
WHILE @@ FETCH_STATUS =0
BEGIN
DECLARE @SQL VARCHAR (MAX) =NU LL
SET @ SQL ='Tắt trình kích hoạt' + @TriggerName + 'ON' + @ SchemaName + '.' + @ TableName
EXEC (@SQL)
PRINT 'Trigger ::' + @TriggerName + 'bị tắt trên' + @ SchemaName + '.' + @ TableName
PRINT @SQL
TÌM HIỂU tiếp theo TỪ DisableTrigger INTO @ TableName, @ SchemaName, @TriggerName
HẾT
ĐÓNG DisableTrigger
DEALLOCATE DisableTrigger
Để kiểm tra xem tất cả các trình kích hoạt đã được tắt đúng cách trong SQL chưa Cơ sở dữ liệu máy chủ, sử dụng truy vấn bên dưới
CHỌN TBL.name AS TableName,
Schema_name (TBL.schema_id) AS Table_SchemaName,
TRG.name AS TriggerName,
TRG. parent_class_desc,
TRƯỜNG HỢP
KHI TRG.is_disabled =0 THÌ 'Bật'
ELSE 'Tắt'
KẾT THÚC NHƯ TRG_Status
TỪ sys.triggers TRG
INNER THAM GIA sys.tables TBL
TRÊN TBL.OBJECT_ID =TRG.parent_id
AND trg.is_disabled =1 - sử dụng bộ lọc này để nhận Trình kích hoạt bị vô hiệu hóa