Obtener Información Sobre Los Disparadores DML

  • Artículo
  • 12/17/2021
  • 4 minutos de lectura
    • M
    • r
    • c
    • p
¿Es útil esta página?

Gracias.

se Aplica a: yes SQL Server (todas las versiones compatibles) SíAzure SQL Database

En este tema se describe cómo obtener información sobre los disparadores 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 disparador no estaba cifrado cuando se creó, obtendrá la definición del disparador. Puede usar la definición para comprender cómo afecta un desencadenador a la tabla en la que está definido. Además, puede encontrar los objetos que utiliza un disparador 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 comenzar:

    Seguridad

  • Para obtener información acerca de los desencadenadores DML, mediante:

    SQL Server Management Studio

    Transact-SQL

Antes de Comenzar

Seguridad

Permisos

sys.SQL.modules, sys.objeto, sys.disparadores, sys.eventos, sys.trigger_events
La visibilidad de los metadatos en las vistas de catálogo se limita a los elementos de seguridad que un usuario posee o sobre los que se le ha concedido algún permiso. Para obtener más información, consulte Configuración de visibilidad de metadatos.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Requiere ser miembro del rol público. La definición de objetos de usuario es visible para el propietario del objeto o los concesionarios que tienen cualquiera de los siguientes permisos: ALTERAR, CONTROLAR, TOMAR POSESIÓN o VER DEFINICIÓN. Estos permisos los poseen implícitamente los miembros de los roles fijos de base de datos db_owner, db_ddladmin y db_securityadmin.

sys.sql_expression_dependencies
Requiere permiso de VER DEFINICIÓN en la base de datos y SELECCIONAR permiso en sys.sql_expression_dependencias para la base de datos. De forma predeterminada, el permiso SELECT solo se concede a los miembros del rol de base de datos fija db_owner. Cuando se otorgan permisos de DEFINICIÓN de SELECCIÓN y VISTA a otro usuario, el concesionario puede ver todas las dependencias de la base de datos.

Usar SQL Server Management Studio

Para ver la definición de un disparador DML

  1. En el Explorador de objetos, conéctese a una instancia de Motor de base de datos y expanda esa instancia.

  2. Expanda la base de datos que desee, expanda las 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 secundario 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 disparador DML

  1. En el Explorador de objetos, conéctese a una instancia de Motor de base de datos y expanda esa instancia.

  2. Expanda la base de datos que desee, expanda las tablas y, a continuación, expanda la tabla que contiene el desencadenador y sus dependencias que desee 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 de objetos, para ver los objetos que dependen del desencadenador DML, seleccione Objetos que dependen de <Nombre del desencadenador DML>. Los objetos aparecen en el área Dependencias.

    Para ver los objetos de los que depende el DML, seleccione Objetos de los que depende <Nombre del disparador 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, se proporciona información 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 disparador 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 siguientes ejemplos en la ventana de consulta y haga clic en Ejecutar. Cada ejemplo muestra cómo puede ver la definición del disparador 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 disparador 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 siguientes ejemplos en la ventana de consulta y haga clic en Ejecutar. Cada ejemplo muestra cómo puede ver las dependencias de iuPerson trigger.

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 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 siguientes ejemplos en la ventana de consulta y haga clic en Ejecutar. Cada ejemplo muestra cómo puede ver la información sobre los disparadores 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 eventos que activan 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 siguientes ejemplos en la ventana de consulta y haga clic en Ejecutar. Cada ejemplo muestra cómo puede ver los eventos que activan el disparador 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 

Véase También

CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ACTIVAR el GATILLO (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.disparadores (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)

Write a Comment

Tu dirección de correo electrónico no será publicada.