Share via


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.

Icono de flecha usado con el vínculo Volver al principio[Top]

Usar 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 expándala.

  2. 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.

  3. 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

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

  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 secundario en el desencadenador que desee y, a continuación, 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 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.

  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 del objeto, haga clic en Aceptar.

Icono de flecha usado con el vínculo Volver al principio[Top]

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 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 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 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

  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 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

  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 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

Icono de flecha usado con el vínculo Volver al principio[Top]

Vea también

Referencia

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)