Compartir por


Obtener información acerca de los desencadenadores DML

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

En este tema se describe cómo obtener información sobre los desencadenadores DML en SQL Server mediante SQL Server Management Studio o Transact-SQL. Esta información puede incluir los tipos de desencadenadores de una tabla, el nombre de un desencadenador, su propietario y la fecha en que se creó o modificó. Si el desencadenador no se cifró cuando se creó, se obtiene la definición del desencadenador. Puede usar la definición para entender cómo un desencadenador afecta a la tabla en la que se define. También puede averiguar los objetos que usa un desencadenador específico. Con esta información, puede identificar los objetos que afectan al desencadenador, en el caso de que se modifiquen o se eliminen de la base de datos.

En este tema

Antes de empezar

Seguridad

Permisos

sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
La visibilidad de los metadatos en las vistas de catálogo se limita a los elementos protegibles y que son propiedad de un usuario o sobre los que el usuario ha recibido algún permiso. Para obtener más información, consulte Metadata Visibility Configuration.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Debe pertenecer al rol public . La definición de objetos de usuario está visible para el propietario del objeto o para los receptores que dispongan de uno de los siguientes permisos: ALTER, CONTROL, TAKE OWNERSHIP o VIEW DEFINITION. Estos permisos corresponden implícitamente a los miembros de los roles fijos de base de datos db_owner, db_ddladminy db_securityadmin .

sys.sql_expression_dependencies
Necesita el permiso VIEW DEFINITION en la base de datos y el permiso SELECT en sys.sql_expression_dependencies para la base de datos. De forma predeterminada, solo se concede el permiso SELECT a los miembros del rol fijo de base de datos db_owner . Si se conceden los permisos SELECT y VIEW DEFINITION a otro usuario, el receptor puede ver todas las dependencias de la base de datos.

Uso de SQL Server Management Studio

Para ver la definición de un desencadenador DML

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos y, a continuación, expándala.

  2. Expanda la base de datos que desee, expanda Tablasy, a continuación, expanda la tabla que contiene el desencadenador cuya definición desea ver.

  3. Expanda Desencadenadores, haga clic con el botón derecho en el desencadenador que quiera y, luego, haga clic en Modificar. La definición del desencadenador DML aparecerá en la ventana de consulta.

Para ver las dependencias de un desencadenador DML

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos y, a continuación, expándala.

  2. Expanda la base de datos que desee, expanda Tablasy, a continuación, expanda la tabla que contiene el desencadenador y sus dependencias que desea ver.

  3. Expanda Desencadenadores, haga clic con el botón derecho en el desencadenador que quiere y, luego, haga clic en Ver dependencias.

  4. En la ventana Dependencias del objeto, para ver los objetos que dependen del desencadenador DML, seleccione Objetos que dependen de <nombre del desencadenador DML>. Los objetos aparecerán en el área Dependencias .

    Para ver los objetos de los que depende el DML, seleccione Objetos de los que depende <nombre del desencadenador DML>. Los objetos aparecerán en el área Dependencias . Expanda cada nodo para ver todos los objetos.

  5. Para obtener información sobre un objeto que aparece en el área Dependencias , haga clic en el objeto. En el campo Objeto seleccionado , la información se proporciona en los cuadros Nombre, Tipoy Tipo de dependencia .

  6. Para cerrar la ventana Dependencias del objeto , haga clic en Aceptar.

Usar Transact-SQL

Para ver la definición de un desencadenador DML

  1. Conéctese con el Motor de base de datos.

  2. En la barra Estándar, haga clic en Nueva consulta.

  3. Copie y pegue uno de los ejemplos siguientes en la ventana de consulta y haga clic en Ejecutar. En cada ejemplo se muestra cómo puede ver la definición del desencadenador 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 las dependencias de un desencadenador DML

  1. Conéctese con el Motor de base de datos.

  2. En la barra Estándar, haga clic en Nueva consulta.

  3. Copie y pegue uno de los ejemplos siguientes en la ventana de consulta y haga clic en Ejecutar. En cada ejemplo se muestra cómo puede ver las dependencias del desencadenador 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 ver información acerca de los desencadenadores DML de la base de datos

  1. Conéctese con el Motor de base de datos.

  2. En la barra Estándar, haga clic en Nueva consulta.

  3. Copie y pegue uno de los ejemplos siguientes en la ventana de consulta y haga clic en Ejecutar. En cada ejemplo se muestra cómo puede ver la información acerca de los desencadenadores DML (TR) de la base de datos.

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 ver información acerca de los eventos que activan un desencadenador DML

  1. Conéctese con el Motor de base de datos.

  2. En la barra Estándar, haga clic en Nueva consulta.

  3. Copie y pegue uno de los ejemplos siguientes en la ventana de consulta y haga clic en Ejecutar. En cada ejemplo se muestra cómo puede ver los eventos que activan el desencadenador 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  

Consulte también

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)