sql >> Databáze >  >> RDS >> Sqlserver

Jak zakázat všechny spouštěče v databázi SQL Server

Někdy máme požadavek, že musíme zakázat všechny spouštěče v databázi SQL Server. Můžeme použít kurzor v TSQL k procházení seznamu spouštěčů a pak je zakázat.

Níže uvedený skript lze použít k deaktivaci všech spouštěčů v databázi SQL Server.

POUŽÍVEJTE [Databáze]

GO
DECLARE @TriggerName JAKO VARCHAR(500)
DECLARE @TableName JAKO VARCHAR(500)
DECLARE @SchemaName JAKO VARCHAR(100)
---Zakázat všechny spouštěče v databázi na serveru SQL
DEKLAROVAT KURZOR DisableTrigger PRO
VYBRAT TBL.name JAKO Název_tabulky,
Název_schematu(TBL.schema_id) JAKO Název_schéma_tabulky,
TRG .name AS TriggerName
OD 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
OTEVŘÍT DisableTrigger
FETCH Next FROM DisableTrigger DO @TableName,@SchemaName,@TriggerName
WHILE @@FETCH_STATUS =0
BEGIN
DECLARE @SQL VARCHAR(MAX)=NU LL

SET @SQL='Zakázat Trigger ' + @TriggerName +' ON '+@SchemaName+'.'+@TableName

EXEC (@SQL)
PRINT 'Trigger ::' + @TriggerName + 'je zakázáno na '+@SchemaName+'.'+@TableName
PRINT @SQL

NAČÍST Další Z DisableTrigger DO @TableName,@SchemaName, @TriggerName
KONEC

ZAVŘÍT DisableTrigger
DEALLOCATE DisableTrigger



Chcete-li zkontrolovat, zda jsou všechny spouštěče správně deaktivovány v SQL Databáze serveru, použijte níže uvedený dotaz

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'
KONEC JAKO TRG_Status
OD sys.triggers TRG
INNER PŘIPOJTE SE k sys.tables TBL
ON TBL.OBJECT_ID =TRG.parent_id
AND trg.is_disabled=1 --použijte tento filtr k získání deaktivovaných spouštěčů
  1. Jak vytvořit uloženou proceduru v SQL Server

  2. Sloučení datových souborů se Statistica, část 1

  3. Jak vypsat všechny databáze pomocí PostgreSQL

  4. Proces aktualizace krok za krokem pro aktualizaci R12.2, část -1