sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo deshabilitar todos los disparadores en la base de datos de SQL Server

En algún momento tenemos el requisito de que debemos deshabilitar todos los activadores en la base de datos de SQL Server. Podemos usar Cursor en TSQL para recorrer la lista de disparadores y luego deshabilitarlos.

El siguiente script se puede usar para deshabilitar todos los disparadores en la base de datos de SQL Server.

USE [Base de datos]

GO
DECLARE @TriggerName COMO VARCHAR(500)
DECLARE @TableName COMO VARCHAR(500)
DECLARE @SchemaName COMO VARCHAR(100)
--Deshabilitar todos los disparadores en una base de datos en SQL Server
DECLARE DisableTrigger 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
ABRIR DisableTrigger
FETCH Siguiente DESDE DisableTrigger EN @TableName,@SchemaName,@TriggerName
MIENTRAS @@FETCH_STATUS =0
COMENZAR
DECLARE @SQL VARCHAR(MAX)=NU LL

SET @SQL='Disable Trigger ' + @TriggerName +' ON '+@SchemaName+'.'+@TableName

EXEC (@SQL)
PRINT 'Trigger ::' + @TriggerName + 'está deshabilitado en '+@SchemaName+'.'+@TableName
PRINT @SQL

FETCH Next FROM DisableTrigger INTO @TableName,@SchemaName, @TriggerName
END

CLOSE DisableTrigger
DEALLOCATE DisableTrigger



Para verificar si todos los disparadores están deshabilitados correctamente en SQL Base de datos del servidor, utilice la siguiente consulta

SELECCIONE 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 'Habilitar'
ELSE 'Deshabilitar'
END AS TRG_Status
FROM sys.triggers TRG
INNER ÚNASE a sys.tables TBL
EN TBL.OBJECT_ID =TRG.parent_id
Y trg.is_disabled=1 --use este filtro para obtener activadores deshabilitados