以下のスクリプトを使用して、SQLServerデータベースのすべてのトリガーを無効にすることができます。
USE [データベース]
GO
DECLARE @TriggerName AS VARCHAR(500)
DECLARE @TableName AS VARCHAR(500)
DECLARE @SchemaName AS VARCHAR(100)
--SQLServerのデータベース内のすべてのトリガーを無効にする
DECLAREDisableTrigger CURSOR FOR
SELECT TBL.name AS TableName、
Schema_name(TBL.schema_id)AS Table_SchemaName、
TRG .name AS TriggerName
FROM sys.triggers TRG
INNER JOIN sys.tables TBL
ON TBL.OBJECT_ID =TRG.parent_id
AND TRG.is_disabled =0
AND TBL.is_ms_shipped =0
OPEN DisableTrigger
FETCH Next FROM DisableTrigger INTO @ TableName、@ SchemaName、@ TriggerName
WHILE @@ FETCH_STATUS =0
BEGIN
DECLARE @SQL VARCHAR(MAX)=NU LL
SET @ SQL='トリガーを無効にする'+@TriggerName +'ON' + @SchemaName+'。'+@ TableName
EXEC(@SQL)
PRINT'Trigger ::' + @TriggerName+'は'+@SchemaName+'で無効になっています。'+@ TableName
PRINT @SQL
FETCH Next FROM DisableTrigger INTO @ TableName、@ SchemaName、 @TriggerName
END
CLOSE DisableTrigger
DEALLOCATE DisableTrigger
SQLですべてのトリガーが正しく無効になっているかどうかを確認するにはサーバーデータベース、以下のクエリを使用します
SELECT TBL.name AS TableName、
Schema_name(TBL.schema_id)AS Table_SchemaName、
TRG.name AS TriggerName、
TRG。 parent_class_desc、
CASE
WHEN TRG.is_disabled =0 THEN'Enable'
ELSE'Disable'
END AS TRG_Status
FROM sys.triggers TRG
INNER JOIN sys.tables TBL
ON TBL.OBJECT_ID =TRG.parent_id
AND trg.is_disabled =1-このフィルターを使用して、無効なトリガーを取得します