- Artículo
- 12/17/2021
- 4 minutos de lectura
-
- M
- r
- c
- p
se Aplica a: SQL Server (todas las versiones compatibles) 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
- Usar SQL Server Management Studio
- Para ver la definición de un disparador DML
- Para ver las dependencias de un disparador DML
- Uso de Transact-SQL
- Para ver la definición de un disparador DML
- Para ver las dependencias de un disparador DML
- Para ver información sobre desencadenadores DML en la base de datos
- Para ver información sobre eventos que activan un desencadenador DML
- Véase También
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
-
En el Explorador de objetos, conéctese a una instancia de Motor de base de datos y expanda esa instancia.
-
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.
-
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
-
En el Explorador de objetos, conéctese a una instancia de Motor de base de datos y expanda esa instancia.
-
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.
-
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 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.
-
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.
-
Para cerrar la ventana Dependencias de objetos, haga clic en Aceptar.
Uso de Transact-SQL
Para ver la definición de un disparador DML
-
Conéctese al Motor de base de datos.
-
En la barra Estándar, haga clic en Nueva consulta.
-
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
-
Conéctese al Motor de base de datos.
-
En la barra Estándar, haga clic en Nueva consulta.
-
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
-
Conéctese al Motor de base de datos.
-
En la barra Estándar, haga clic en Nueva consulta.
-
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
-
Conéctese al Motor de base de datos.
-
En la barra Estándar, haga clic en Nueva consulta.
-
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)