Obtenir des informations sur les déclencheurs DML

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Cette rubrique décrit comment obtenir des informations sur les déclencheurs DML dans SQL Server en utilisant SQL Server Management Studio ou Transact-SQL. Ces informations peuvent inclure les types de déclencheurs existant sur une table, ainsi que leur nom, leur propriétaire et la date de leur création ou modification. Si le déclencheur n'a pas été chiffré lors de sa création, vous obtenez la définition du déclencheur. Vous pouvez utiliser la définition pour vous aider à comprendre comment un déclencheur affecte la table sur laquelle il est défini. En outre, vous pouvez déterminer les objets qu'un déclencheur spécifique utilise. Avec ces informations, vous pouvez identifier les objets dont l'éventuelle suppression ou modification aurait une répercussion sur le déclencheur.

Dans cette rubrique

Avant de commencer

Sécurité

Autorisations

sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
La visibilité des métadonnées dans les affichages catalogue est limitée aux éléments sécurisables qu'un utilisateur détient ou pour lesquels des autorisations lui ont été accordées. Pour plus d'informations, consultez Metadata Visibility Configuration.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Nécessite l'appartenance au rôle public . La définition des objets utilisateur est visible par le propriétaire de l’objet ou les bénéficiaires de l’une des autorisations suivantes : ALTER, CONTROL, TAKE OWNERSHIP ou VIEW DEFINITION. Ces autorisations sont implicitement possédées par des membres des rôles de base de données fixes db_owner, db_ddladminet db_securityadmin .

sys.sql_expression_dependencies
Requiert l’autorisation VIEW DEFINITION sur la base de données et l’autorisation SELECT sur sys.sql_expression_dependencies pour la base de données. Par défaut, l’autorisation SELECT est accordée uniquement aux membres du rôle de base de données fixe db_owner . Lorsque les autorisations SELECT et VIEW DEFINITION sont accordées à un autre utilisateur, le bénéficiaire peut consulter toutes les dépendances dans la base de données.

Utilisation de SQL Server Management Studio

Pour voir la définition d'un déclencheur DML

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.

  2. Développez la base de données choisie, développez Tables, puis développez la table qui contient le déclencheur dont vous souhaitez consulter la définition.

  3. Développez Déclencheurs, cliquez avec le bouton droit sur le déclencheur de votre choix, puis cliquez sur Modifier. La définition du déclencheur DML s'affiche dans la fenêtre de requête.

Pour afficher les dépendances d'un déclencheur DML

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données et développez-la.

  2. Développez la base de données choisie, développez Tables, puis développez la table qui contient le déclencheur et ses dépendances que vous souhaitez afficher.

  3. Développez Déclencheurs, cliquez avec le bouton droit sur le déclencheur de votre choix, puis cliquez sur Afficher les dépendances.

  4. Dans la fenêtre Dépendances d'objets, sélectionnez Objets dépendants du <nom du déclencheur DML> pour afficher les objets qui dépendent du déclencheur DML. Les objets apparaissent dans la zone Dépendances .

    Pour afficher les objets dont dépend le déclencheur DML, sélectionnez Objets dont dépend <nom du déclencheur DML>. Les objets apparaissent dans la zone Dépendances . Développez chaque nœud pour voir tous les objets.

  5. Pour obtenir des informations sur un objet qui apparaît dans la zone Dépendances , cliquez sur l'objet. Dans le champ Objet sélectionné , les informations sont fournies dans les zones Nom, Typeet Type de dépendance .

  6. Pour fermer la fenêtre Dépendances d'objet , cliquez sur OK.

Utilisation de Transact-SQL

Pour voir la définition d'un déclencheur DML

  1. Connectez-vous au Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'un des exemples suivants dans la fenêtre de requête, puis cliquez sur Exécuter. Chaque exemple montre comment afficher la définition du déclencheur iuPerson .

USE AdventureWorks2022;  
GO  
SELECT definition   
FROM sys.sql_modules  
WHERE object_id = OBJECT_ID(N'Person.iuPerson');   
GO  
USE AdventureWorks2022;   
GO  
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.iuPerson')) AS ObjectDefinition;   
GO  
  
USE AdventureWorks2022;   
GO  
EXEC sp_helptext 'Person.iuPerson'  
GO  
  

Pour afficher les dépendances d'un déclencheur DML

  1. Connectez-vous au Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'un des exemples suivants dans la fenêtre de requête, puis cliquez sur Exécuter. Chaque exemple montre comment afficher les dépendances du déclencheur iuPerson .

USE AdventureWorks2022;   
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  
  

Pour afficher les informations sur les déclencheurs DML dans la base de données

  1. Connectez-vous au Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'un des exemples suivants dans la fenêtre de requête, puis cliquez sur Exécuter. Chaque exemple montre comment afficher des informations sur les déclencheurs DML (TR) dans la base de données.

USE AdventureWorks2022;   
GO  
SELECT  name, parent_id, create_date, modify_date, is_instead_of_trigger  
FROM sys.triggers  
WHERE type = 'TR';   
GO  
  
USE AdventureWorks2022;   
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 AdventureWorks2022;   
GO  
SELECT OBJECTPROPERTY(OBJECT_ID(N'Person.iuPerson'), 'ExecIsInsteadOfTrigger');   
GO  
  

Pour afficher les informations sur les événements qui activent un déclencheur DML

  1. Connectez-vous au Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'un des exemples suivants dans la fenêtre de requête, puis cliquez sur Exécuter. Chaque exemple montre comment afficher les événements qui déclenchent le déclencheur iuPerson .

USE AdventureWorks2022;   
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 AdventureWorks2022;   
GO   
SELECT object_id, type,is_first, is_last  
FROM sys.trigger_events  
WHERE object_id = OBJECT_ID('Person.iuPerson');   
GO  

Voir aussi

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)