Dicas SQL Server

Listar todas as triggers em uma base de dados SQL Server.

Listar todas as triggers em uma base de dados SQL Server.
Listar todas as triggers em uma base de dados SQL Server.

Como listar todas as triggers em uma base de dados no SQL Server.

Uma trigger é basicamente um tipo de procedure que é automaticamente executada quando algum evento ocorre no banco de dados SQL Server.
Existem vários tipos de triggers, triggers de DDL, DML e Triggers de logon.

Triggers DDL são executados em resposta a uma variedade de eventos de DDL. Esses eventos correspondem principalmente às instruções CREATE, ALTER e DROP do Transact-SQL e algumas procedures no sistema que executam operações do tipo DDL. Triggers de logon dispara em resposta ao evento LOGON que é gerado quando uma sessão de usuário está sendo estabelecida. Essas são as mais utilizadas.

Mas chega de enrolação e vamos ao que interessa.
Como eu posso listar todas as triggers em uma base de dados? Sendo objetivo vou colocar abaixo o script que procura:

SELECT 
     sysobjects.name AS NomeDaTrigger 
    ,USER_NAME(sysobjects.uid) AS OwnerDaTrigger 
    ,s.name AS SchemaDaTabela 
    ,OBJECT_NAME(parent_obj) AS NomeDaTabela 
    ,OBJECTPROPERTY( id, 'ExecIsUpdateTrigger') AS isupdate 
    ,OBJECTPROPERTY( id, 'ExecIsDeleteTrigger') AS isdelete 
    ,OBJECTPROPERTY( id, 'ExecIsInsertTrigger') AS isinsert 
    ,OBJECTPROPERTY( id, 'ExecIsAfterTrigger') AS isafter 
    ,OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger') AS isinsteadof 
    ,OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') AS [disabled] 
FROM sysobjects 
INNER JOIN sys.tables t 
    ON sysobjects.parent_obj = t.object_id 

INNER JOIN sys.schemas s 
    ON t.schema_id = s.schema_id 
WHERE sysobjects.type = 'TR' 

IsUpdate – Significa que a trigger é disparada em caso de updates na tabela.
IsDelete – Significa que a trigger é disparada em caso de delete na tabela.
IsInsert – Significa que a trigger é disparada em caso de insert na tabela.
IsInsteadOf – Geralmente, a trigger INSTEAD é definido em uma exibição para inserir, atualizar ou apagar dados em uma ou mais tabelas base.
Disabled – Se a trigger está desativada ou não.

Versão para listar todas as triggers no SQL Server 2000

SELECT 
     o.name AS NomeDaTrigger 
    ,'x' AS OwnerDaTrigger 
    ,s.name AS SchemaDaTabela 
    ,OBJECT_NAME(o.parent_obj) AS NomeDaTabela 
    ,OBJECTPROPERTY(o.id, 'ExecIsUpdateTrigger') AS isupdate 
    ,OBJECTPROPERTY(o.id, 'ExecIsDeleteTrigger') AS isdelete 
    ,OBJECTPROPERTY(o.id, 'ExecIsInsertTrigger') AS isinsert 
    ,OBJECTPROPERTY(o.id, 'ExecIsAfterTrigger') AS isafter 
    ,OBJECTPROPERTY(o.id, 'ExecIsInsteadOfTrigger') AS isinsteadof 
    ,OBJECTPROPERTY(o.id, 'ExecIsTriggerDisabled') AS [disabled] 
FROM sysobjects AS o 
INNER JOIN sysobjects AS o2 
    ON o.parent_obj = o2.id 
INNER JOIN sysusers AS s 
    ON o2.uid = s.uid 
WHERE o.type = 'TR'

Verificar todas as triggers em todos os bancos de dados!

Para listar todas as triggers em todas as bases de dados execute o script a seguir:

DECLARE @command varchar(1000) 
SELECT @command = 'USE ? SELECT 
     DB_NAME() AS DatabaseName
	,sysobjects.name AS trigger_name 
    ,USER_NAME(sysobjects.uid) AS trigger_owner 
    ,s.name AS table_schema 
    ,OBJECT_NAME(parent_obj) AS table_name 
    ,OBJECTPROPERTY( id, ''ExecIsUpdateTrigger'') AS isupdate 
    ,OBJECTPROPERTY( id, ''ExecIsDeleteTrigger'') AS isdelete 
    ,OBJECTPROPERTY( id, ''ExecIsInsertTrigger'') AS isinsert 
    ,OBJECTPROPERTY( id, ''ExecIsAfterTrigger'') AS isafter 
    ,OBJECTPROPERTY( id, ''ExecIsInsteadOfTrigger'') AS isinsteadof 
    ,OBJECTPROPERTY(id, ''ExecIsTriggerDisabled'') AS [disabled] 
FROM sysobjects 
/*
INNER JOIN sysusers 
    ON sysobjects.uid = sysusers.uid 
*/  
INNER JOIN sys.tables t 
    ON sysobjects.parent_obj = t.object_id 

INNER JOIN sys.schemas s 
    ON t.schema_id = s.schema_id 
WHERE sysobjects.type = ''TR''' 
EXEC sp_MSforeachdb @command

Use triggers com moderação.

Listar todas as triggers em uma base de dados SQL Server.