Compartilhar via


Obter informações sobre gatilhos DML

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureBanco de dados SQL no Microsoft Fabric

Este tópico descreve como obter informações sobre gatilhos DML no SQL Server 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

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 Metadata Visibility Configuration.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Requer associação à função pública . A definição de objetos de usuário é visível ao proprietário do objeto e às entidades autorizadas que têm uma das seguintes permissões: ALTER, CONTROL, TAKE OWNERSHIP ou VIEW DEFINITION. Estas permissões são mantidas implicitamente por membros das funções fixas de banco de dados 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.

Como usar 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 expanda-a.

  2. Expanda o banco de dados desejado, expanda Tabelase 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 do mouse 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 expanda-a.

  2. Expanda o banco de dados desejado, expanda Tabelase 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 do mouse no gatilho desejado e clique em Exibir Dependências.

  4. Na janela Dependências de objetos, para exibir os objetos que dependem do gatilho DML, selecione Objetos que dependem de <nome do gatilho DML>. Os objetos aparecem na área Dependências .

    Para exibir os objetos dos quais o DML depende, selecione Objetos que dependem de <nome do gatilho DML>. 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, Tipoe Tipo de dependência .

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

Usando o 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 AdventureWorks2022;  
GO  
SELECT definition   
FROM sys.sql_modules  
WHERE object_id = OBJECT_ID(N'Person.iuPerson');   
GO  
USE AdventureWorks2022;   
GO  
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.iuPerson')) AS ObjectDefinition;   
GO  
  
USE AdventureWorks2022;   
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 AdventureWorks2022;   
GO  
SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,   
    o.type_desc AS referencing_description,   
    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 AdventureWorks2022;   
GO  
SELECT  name, parent_id, create_date, modify_date, is_instead_of_trigger  
FROM sys.triggers  
WHERE type = 'TR';   
GO  
  
USE AdventureWorks2022;   
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 AdventureWorks2022;   
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 AdventureWorks2022;   
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 AdventureWorks2022;   
GO   
SELECT object_id, type,is_first, is_last  
FROM sys.trigger_events  
WHERE object_id = OBJECT_ID('Person.iuPerson');   
GO  

Confira também

CREATE TRIGGER (Transact-SQL)
GATILHO DE SOLTA (Transact-SQL)
ATIVAR TRIGGER (Transact-SQL)
DESABILITAR GATILHO (Transact-SQL)
DADOS DE EVENTOS (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_módulos (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)