Compartir a través de


Obtener información acerca de los desencadenadores DML

En este tema se describe cómo obtener información sobre los desencadenadores DML en SQL Server 2014 mediante SQL Server Management Studio o Transact-SQL. Esta información puede incluir los tipos de desencadenadores en 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ó, obtendrá la definición del desencadenador. Puede usar la definición para ayudarle a comprender cómo un desencadenador afecta a la tabla sobre la cual está definido. Además, puede averiguar los objetos que usa un desencadenador específico. Con esta información, puede identificar los objetos que afectan al desencadenador si se cambian o eliminan en 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 tiene 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
Requiere 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, el permiso SELECT solo se concede 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 expanda esa instancia.

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

  3. Expanda Desencadenadores, haga clic con el botón derecho en el desencadenador que desee y, a continuación, haga clic en Modificar. La definición del desencadenador DML aparece 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 expanda esa instancia.

  2. Expanda la base de datos que desee, expanda Tablas y, 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 desee y, a continuación, haga clic en Ver dependencias.

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

    Para ver los objetos en los que depende DML, seleccione Objetos en los que depende el nombre> del <desencadenador DML. Los objetos aparecen 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, Tipo y Tipo de dependencia .

  6. Para cerrar la ventana Dependencias de objetos , haga clic en Aceptar.

Uso de Transact-SQL

Para ver la definición de un desencadenador DML

  1. Conéctese al 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 se puede ver la definición del iuPerson desencadenador.

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 ver las dependencias de un desencadenador DML

  1. Conéctese al 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 se pueden ver las dependencias del iuPerson desencadenador.

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 ver información sobre los desencadenadores DML en la base de datos

  1. Conéctese al 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 información sobre los desencadenadores DML (TR) en la base de datos.

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 ver información sobre los eventos que desencadenan un desencadenador DML

  1. Conéctese al 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 se pueden ver los eventos que activan el iuPerson desencadenador.

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  

Véase también

CREATE TRIGGER (Transact-SQL)
Desactivar el disparador (Transact-SQL)
Habilitar disparador (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)