Obtener información acerca de los desencadenadores DML
En este tema se describe cómo obtener información acerca de los desencadenadores DML en SQL Server 2012 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
Para obtener información acerca de los desencadenadores DML, usando:
SQL Server Management Studio
Transact-SQL
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, vea Configuración de visibilidad de los metadatos.OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Necesita la pertenencia al rol public. La definición de los objetos de usuario está visible para el propietario del objeto o los receptores de los permisos siguientes: 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_ddladmin y 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.
[Top]
Usar SQL Server Management Studio
Para ver la definición de un desencadenador DML
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos y expándala.
Expanda la base de datos que desee, expanda Tablas y, a continuación, expanda la tabla que contiene el desencadenador cuya definición desea ver.
Expanda Desencadenadores, haga clic con el botón secundario en el desencadenador que desee y, a continuación, haga clic en Modificar. La definición del desencadenador DML aparecerá en la ventana de consulta.
Para ver las dependencias de un desencadenador DML
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos y expándala.
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.
Expanda Desencadenadores, haga clic con el botón secundario en el desencadenador que desee y, a continuación, haga clic en Ver dependencias.
En la ventana Dependencias del objeto, para ver los objetos que dependen del desencadenador DML, seleccione Objetos que dependen de <nombre desencadenador DML>. Los objetos aparecerán en el área Dependencias.
Para ver los objetos de los que depende el desencadenador DML, seleccione Objetos de los que depende <nombre desencadenador DML>. Los objetos aparecerán en el área Dependencias. Expanda cada nodo para ver todos los objetos.
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.
Para cerrar la ventana Dependencias del objeto, haga clic en Aceptar.
[Top]
Usar Transact-SQL
Para ver la definición de un desencadenador DML
Conéctese con el Motor de base de datos.
En la barra Estándar, haga clic en Nueva consulta.
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 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
Conéctese con el Motor de base de datos.
En la barra Estándar, haga clic en Nueva consulta.
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 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 acerca de los desencadenadores DML de la base de datos
Conéctese con el Motor de base de datos.
En la barra Estándar, haga clic en Nueva consulta.
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 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 acerca de los eventos que activan un desencadenador DML
Conéctese con el Motor de base de datos.
En la barra Estándar, haga clic en Nueva consulta.
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 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
[Top]
Vea también
Referencia
DISABLE TRIGGER (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)