Partilhar via


Obter informações sobre disparadores DML

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase 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 foi criptografado quando foi criado, você obterá a definição do gatilho. Você pode usar a definição para ajudá-lo a entender como um gatilho afeta a tabela na qual ele é 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 forem alterados ou excluídos no banco de dados.

Neste tópico

Antes de começar

Segurança

Permissões

sys.sql.modules, sys.object, sys.triggers, sys.eventssys.trigger_events
A visibilidade dos metadados em visualizações de catálogo é limitada aos elementos securitários que um utilizador possui ou para os quais o utilizador recebeu alguma permissão. Para obter mais informações, consulte Configuração de visibilidade de metadados.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Requer adesão à função pública de . A definição de objetos de usuário é visível para o proprietário ou beneficiários do objeto que têm qualquer uma das seguintes permissões: ALTER, CONTROL, TAKE OWNERSHIP ou VIEW DEFINITION. Essas permissões são mantidas implicitamente por membros das funções de banco de dados db_owner, db_ddladmine db_securityadmin fixas.

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

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 expanda essa instância.

  2. Expanda o banco de dados desejado, expanda Tabelase, em seguida, expanda a tabela que contém o gatilho para o qual você deseja 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 ver as dependências de um trigger DML

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

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

  3. Expanda Triggers, clique com o botão direito do rato no gatilho desejado e, em seguida, clique em Ver Dependências.

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

    Para exibir os objetos dos quais a DML depende, selecione Objetos dos quais <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, Tipoe Tipo de dependência.

  6. Para fechar a janela Depedências de Objetos, clique em OK.

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 seguintes exemplos 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 ver as dependências de um trigger 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 seguintes exemplos na janela de consulta e clique em Executar. Cada exemplo mostra como pode ver as dependências do disparador 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 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 seguintes exemplos na janela de consulta e clique em Executar. Cada exemplo mostra como você pode exibir informações sobre 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 eventos que disparam 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 seguintes exemplos 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  

Ver também

CRIAR GATILHO (Transact-SQL)
GATILHO DE QUEDA (Transact-SQL)
ATIVAR TRIGGER (Transact-SQL)
DESATIVAR TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
ALTER GATILHO (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)