Obter informações sobre gatilhos DML
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
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:
Para obter informações os gatilhos DML, usando:
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
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e expanda-a.
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.
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
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e expanda-a.
Expanda o banco de dados desejado, expanda Tabelase expanda a tabela que contém o gatilho e suas dependências que você quer exibir.
Expanda Gatilhos, clique com o botão direito do mouse no gatilho desejado e clique em Exibir Dependências.
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.
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 .
Para fechar a janela Dependências do Objeto , clique em OK.
Usando o Transact-SQL
Para exibir a definição de um gatilho DML
Conecte-se ao Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
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
Conecte-se ao Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
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_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
Conecte-se ao Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
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
Conecte-se ao Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
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)
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)