Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да деактивирате всички тригери в базата данни на SQL Server

Понякога имаме изискване да деактивираме всички тригери в базата данни на SQL Server. Можем да използваме курсора в TSQL, за да преминем през списъка с тригери и след това да ги деактивираме.

Скриптът по-долу може да се използва за деактивиране на всички тригери в базата данни на SQL Server.

ИЗПОЛЗВАЙТЕ [База данни]

GO
ДЕКЛАРИРАНЕ @TriggerName КАТО VARCHAR(500)
ДЕКЛАРИРАНЕ @TableName КАТО VARCHAR(500)
ДЕКЛАРИРАНЕ @SchemaName КАТО VARCHAR(100)
--Деактивирайте всички тригери в база данни в SQL Server
ДЕКЛАРИРАЙТЕ DisableTrigger CURSOR ЗА
ИЗБЕРЕТЕ TBL.name КАТО TableName,
Schema_name(TBL.schema_id) КАТО Table_SchemaName,
TRG .name AS TriggerName
ОТ sys.triggers TRG
INNER JOIN sys.tables TBL
ON TBL.OBJECT_ID =TRG.parent_id
И TRG.is_disabled=0
И TBL.is_ms_shipped=0
ОТВОРЕТЕ DisableTrigger
ИЗВЛЕЧЕТЕ СЛЕДВАЩО ОТ DisableTrigger В @TableName,@SchemaName,@TriggerName
ДОКАТО @@FETCH_STATUS =0
BEGIN
ДЕКЛАРИРАНЕ @SQL VARCHAR(MAX)=NU LL

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

EXEC (@SQL)
PRINT 'Trigger ::' + @TriggerName + 'е деактивиран на '+@SchemaName+'.'+@TableName
PRINT @SQL

ИЗВЛЕЧИ СЛЕДВАЩО ОТ DisableTrigger В @TableName,@SchemaName, @TriggerName
END

CLOSE DisableTrigger
DEALLOCATE DisableTrigger



За да проверите дали всички тригери са деактивирани правилно в SQL Сървърна база данни, използвайте по-долу заявка

ИЗБЕРЕТЕ TBL.name КАТО име на таблица,
Schema_name(TBL.schema_id) AS Table_SchemaName,
TRG.name AS TriggerName,
TRG. parent_class_desc,
CASE
КОГАТО TRG.is_disabled =0 THEN 'Enable'
ELSE 'Disable'
END AS TRG_Status
ОТ sys.triggers TRG
INNER ПРИСЪЕДИНЕТЕ се към sys.tables TBL
ON TBL.OBJECT_ID =TRG.parent_id
И trg.is_disabled=1 --използвайте този филтър, за да получите деактивирани тригери
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на индекси в оптимизирани за паметта таблици на SQL Server

  2. Какво е STATISTICS PROFILE в SQL Server?

  3. Ограничете връзка със SQL Server до конкретен IP адрес

  4. Нуждаете се от колона за дата и час в SQL Server, която автоматично се актуализира, когато записът бъде променен

  5. Как да махна таблица, ако съществува?