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.
The following two tabs change content below.

Wesley Mota

DBA SQL Server
Profissional graduado em Banco de Dados e Sistemas de Informação com mais de 7 anos de experiência em empresas de software. Certificado MCSA Microsoft SQL Server possui intensa vivência em administração de banco de dados, Tunning, Performance SQL Server, levantamento de melhorias e monitoramento de banco de dados e servidores SQL Server. Consultoria SQL Server em diversos clientes no Brasil e ao redor do mundo. Escritor no blog dbasqlserverbr.com.br/blog. Onde compartilha conhecimento, experiências e dicas de performance para DBAs SQL Server. Conhecimentos em Oracle e ambientes de alta disponibilidade. Desenvolvimento de softwares web e mobile.Gerenciamento de equipe e projetos.

Latest posts by Wesley Mota (see all)