Obter informações sobre gatilhos DML

Este tópico descreve como obter informações sobre os gatilhos DML no SQL Server 2012 usando o SQL Server Management Studio ou o Transact-SQL. Essas informações podem incluir os tipos de gatilhos em uma tabela, o nome de um gatilho, seu proprietário e a data em que foi criado ou modificado. Se o gatilho não tiver sido criptografado quando foi criado, você obterá a definição do gatilho. A definição ajudará a entender como um gatilho afeta a tabela na qual está definido. Além disso, você pode descobrir os objetos que um gatilho específico usa. Com essas informações, você pode identificar os objetos que afetam o gatilho se eles são alterados ou excluídos do banco de dados.

Neste tópico

  • Antes de começar:

    Segurança

  • Para obter informações os gatilhos DML, usando:

    SQL Server Management Studio

    Transact-SQL

Antes de começar

Segurança

Permissões

  • sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
    A visibilidade dos metadados em exibições do catálogo está limitada aos protegíveis que pertencem a um usuário ou para os quais o usuário recebeu permissão. Para obter mais informações, consulte Configuração de visibilidade de metadados.

  • OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
    Requer a associação à função public. A definição de objetos de usuário é visível ao proprietário do objeto e aos que possuírem qualquer uma das seguintes permissões: ALTER, CONTROL, TAKE OWNERSHIP ou VIEW DEFINITION. Estas permissões são mantidas implicitamente por membros das funções de banco de dados fixas db_owner, db_ddladmine db_securityadmin.

  • sys.sql_expression_dependencies
    Requer permissão VIEW DEFINITION no banco de dados e permissão SELECT em sys.sql_expression_dependencies para o banco de dados. Por padrão, a permissão SELECT é concedida somente a membros da função de banco de dados fixa db_owner. Quando são concedidas permissões SELECT e VIEW DEFINITION a outro usuário, o usuário autorizado pode exibir todas as dependências no banco de dados.

Ícone de seta usado com o link Voltar ao Início[Top]

Usando o SQL Server Management Studio

Para exibir a definição de um gatilho DML

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e, depois, expanda essa instância.

  2. Expanda o banco de dados desejado, expanda Tabelas e expanda a tabela que contém o gatilho para o qual você quer exibir a definição.

  3. Expanda Gatilhos, clique com o botão direito no gatilho desejado e clique em Modificar. A definição do gatilho DML aparece na janela de consulta.

Para exibir as dependências de um gatilho DML

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e, depois, expanda essa instância.

  2. Expanda o banco de dados desejado, expanda Tabelas e expanda a tabela que contém o gatilho e suas dependências que você quer exibir.

  3. Expanda Gatilhos, clique com o botão direito no gatilho desejado e clique em Exibir Dependências.

  4. Na janela Dependências do Objeto, exiba os objetos que dependem do gatilho DML, selecione Objetos que dependem do <Nome do gatilho DML>. Os objetos aparecem na área Dependências.

    Para exibir os objetos do qual o DML depende, selecione Objetos no qual <Nome do gatilho DML> depende. Os objetos aparecem na área Dependências. Expanda cada nó para ver todos os objetos.

  5. Para obter informações sobre um objeto que aparece na área Dependências, clique no objeto. No campo Objeto selecionado, as informações são fornecidas nas caixas Nome, Tipo e Tipo de dependência.

  6. Para fechar a janela Dependências do Objeto, clique em OK.

Ícone de seta usado com o link Voltar ao Início[Top]

Usando Transact-SQL

Para exibir a definição de um gatilho DML

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. Copie e cole um dos exemplos a seguir na janela de consulta e clique em Executar. Cada exemplo mostra como você pode exibir a definição do gatilho iuPerson.

USE AdventureWorks2012;
GO
SELECT definition 
FROM sys.sql_modules
WHERE object_id = OBJECT_ID(N'Person.iuPerson'); 
GO

USE AdventureWorks2012; 
GO
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.iuPerson')) AS ObjectDefinition; 
GO

USE AdventureWorks2012; 
GO
EXEC sp_helptext 'Person.iuPerson'
GO

Para exibir as dependências de um gatilho DML

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. Copie e cole um dos exemplos a seguir na janela de consulta e clique em Executar. Cada exemplo mostra como você pode exibir as dependências do gatilho iuPerson.

USE AdventureWorks2012; 
GO
SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name, 
    o.type_desc AS referencing_desciption, 
    COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id, 
    referencing_class_desc, referenced_class_desc, 
    referenced_server_name, referenced_database_name, referenced_schema_name, 
    referenced_entity_name, 
    COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name, 
    is_caller_dependent, is_ambiguous
FROM sys.sql_expression_dependencies AS sed
INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id
WHERE referencing_id = OBJECT_ID(N'Person.iuPerson'); 
GO

Para exibir informações sobre os gatilhos DML no banco de dados

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. Copie e cole um dos exemplos a seguir na janela de consulta e clique em Executar. Cada exemplo mostra como você pode exibir informações sobre os gatilhos DML (TR) no banco de dados.

USE AdventureWorks2012; 
GO
SELECT  name, parent_id, create_date, modify_date, is_instead_of_trigger
FROM sys.triggers
WHERE type = 'TR'; 
GO

USE AdventureWorks2012; 
GO
SELECT  name, object_id, schema_id, parent_object_id, type_desc, create_date, modify_date, is_published
FROM sys.objects
WHERE type = 'TR'; 
GO

USE AdventureWorks2012; 
GO
SELECT OBJECTPROPERTY(OBJECT_ID(N'Person.iuPerson'), 'ExecIsInsteadOfTrigger'); 
GO

Para exibir informações sobre os eventos que acionam um gatilho DML

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. Copie e cole um dos exemplos a seguir na janela de consulta e clique em Executar. Cada exemplo mostra como você pode exibir os eventos que disparam o gatilho iuPerson.

USE AdventureWorks2012; 
GO
SELECT object_id, type, type_desc, is_trigger_event, event_group_type, event_group_type_desc 
FROM sys.events
WHERE object_id = OBJECT_ID('Person.iuPerson'); 
GO

USE AdventureWorks2012; 
GO SELECT object_id, type,is_first, is_last
FROM sys.trigger_events
WHERE object_id = OBJECT_ID('Person.iuPerson'); 
GO

Ícone de seta usado com o link Voltar ao Início[Top]

Consulte também

Referência

CREATE TRIGGER (Transact-SQL)

DROP TRIGGER (Transact-SQL)

ENABLE TRIGGER (Transact-SQL)

DISABLE TRIGGER (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_rename (Transact-SQL)

ALTER TRIGGER (Transact-SQL)

sp_help (Transact-SQL)

sp_helptrigger (Transact-SQL)

sys.triggers (Transact-SQL)

sys.trigger_events (Transact-SQL)

sys.sql_modules (Transact-SQL)

sys.assembly_modules (Transact-SQL)

sys.server_triggers (Transact-SQL)

sys.server_trigger_events (Transact-SQL)

sys.server_sql_modules (Transact-SQL)

sys.server_assembly_modules (Transact-SQL)

OBJECTPROPERTY (Transact-SQL)

OBJECT_DEFINITION (Transact-SQL)