Poniższy skrypt może być użyty do wyłączenia wszystkich wyzwalaczy w bazie danych SQL Server.
UŻYJ [Baza danych]
GO
DECLARE @TriggerName AS VARCHAR(500)
DECLARE @TableName AS VARCHAR(500)
DECLARE @SchemaName AS VARCHAR(100)
--Wyłącz wszystkie wyzwalacze w bazie danych w programie SQL Server
DECLARE DisableTrigger CURSOR FOR
SELECT TBL.name AS TableName,
Schema_name(TBL.schema_id) AS Table_SchemaName,
TRG .name AS Nazwa wyzwalacza
Z sys.triggers TRG
DOŁĄCZENIE WEWNĘTRZNE sys.tables TBL
NA 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='Wyłącz wyzwalacz ' + @NazwaWyzwalacza +' ON '+@NazwaSchematu+'.'+@NazwaTabeli
EXEC (@SQL)
PRINT 'Wyzwalacz ::' + @NazwaWyzwalacza + 'jest wyłączony dla '+@NazwaSchematu+'.'+@NazwaSchematu
PRINT @SQL
FETCH Next FROM DisableTrigger INTO @NazwaSchematu,@NazwaSchematu, @TriggerName
END
CLOSE DisableTrigger
DEALLOCATE DisableTrigger
Aby sprawdzić, czy wszystkie wyzwalacze są poprawnie wyłączone w SQL Baza danych serwera, użyj poniższego zapytania
SELECT nazwa_tabeli AS nazwa_tabeli,
nazwa_schematu(identyfikator_schematu_tabeli) AS nazwa_schematu_tabeli,
TRG.nazwa_nazwa_wyzwalacza,
TRG. parent_class_desc,
PRZYPADEK
KIEDY TRG.is_disabled =0 THEN 'Włącz'
JESZCZE 'Wyłącz'
KONIEC JAKO TRG_Status
Z sys.triggers TRG
WEWNĘTRZNY DOŁĄCZ do sys.tables TBL
NA TBL.OBJECT_ID =TRG.parent_id
ORAZ trg.is_disabled=1 --użyj tego filtra, aby uzyskać wyłączone wyzwalacze