sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan deaktiveres alle triggere i SQL Server-databasen

Nogle gange har vi krav om, at vi skal deaktivere alle triggere i SQL Server-databasen. Vi kan bruge markør i TSQL til at gå gennem listen over triggere og derefter deaktivere dem.

Nedenstående script kan bruges til at deaktivere alle triggere i SQL Server-databasen.

BRUG [Database]

GO
DECLARE @TriggerName SOM VARCHAR(500)
DECLARE @TableName AS VARCHAR(500)
DECLARE @SchemaName AS VARCHAR(100)
--Deaktiver alle triggere i en database i SQL Server
ERKLÆR DisableTrigger CURSOR FOR
SELECT TBL.name AS TableName,
Schema_name(TBL.schema_id) AS Table_SchemaName,
TRG .name AS TriggerName
FRA sys.triggers TRG
INNER JOIN sys.tables TBL
PÅ TBL.OBJECT_ID =TRG.parent_id
OG TRG.is_disabled=0
OG TBL.is_ms_shipped=0
ÅBN DisableTrigger
FETCH Næste FRA DisableTrigger INTO @TableName,@SchemaName,@TriggerName
MENS @@FETCH_STATUS =0
BEGIN
DECLARE @SQL VARCHAR(MAX)=NU LL

SET @SQL='Deaktiver Trigger ' + @TriggerName +' PÅ '+@SchemaName+'.'+@TableName

EXEC (@SQL)
UDSKRIV 'Trigger ::' + @TriggerName + 'er disabled on '+@SchemaName+'.'+@TableName
PRINT @SQL

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

LUK DisableTrigger
DEALLOCATE DisableTrigger



For at kontrollere, om alle triggere er deaktiveret korrekt i SQL Serverdatabase, brug nedenstående forespørgsel

SELECT TBL.name AS TableName,
Schema_name(TBL.schema_id) AS Table_SchemaName,
TRG.name AS TriggerName,
TRG. parent_class_desc,
CASE
NÅR TRG.is_disabled =0 SÅ 'Aktiver'
ELSE 'Disable'
END AS TRG_Status
FRA sys.triggers TRG
INNER JOIN sys.tables TBL
PÅ TBL.OBJECT_ID =TRG.parent_id
OG trg.is_disabled=1 --brug dette filter til at få deaktiverede triggere
  1. Sådan automatiseres udrulning af PostgreSQL-database

  2. Hæver barren på MySQL, MariaDB, PostgreSQL og MongoDB Management

  3. Forskel mellem tidsstempler med/uden tidszone i PostgreSQL

  4. Valg af processor til SQL Server 2014 – Del 1