Obtenir Des Informations Sur Les Déclencheurs DML

  • Article
  • 12/17/2021
  • 4 minutes à lire
    • M
    • r
    • c
    • p
Cette page est-elle utile ?

Merci.

S’applique à: yes SQL Server (toutes les versions prises en charge)  Oui Base de données SQL Azure

Cette rubrique décrit comment obtenir des informations sur les déclencheurs DML dans SQL Server à l’aide de SQL Server Management Studio ou Transact-SQL. Ces informations peuvent inclure les types de déclencheurs sur une table, le nom d’un déclencheur, son propriétaire et la date à laquelle il a été créé ou modifié. Si le déclencheur n’était pas 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 trouver les objets qu’un déclencheur spécifique utilise. Avec ces informations, vous pouvez identifier les objets qui affectent le déclencheur s’ils sont modifiés ou supprimés dans la base de données.

Dans Cette Rubrique

  • Avant de commencer :

    Sécurité

  • Pour obtenir des informations sur les déclencheurs DML, utilisez :

    SQL Server Management Studio

    Transact-SQL

Avant De Commencer

Sécurité

Autorisations

sys.SQL.modules, sys.objet, sys.déclencheurs, sys.événements, sys.trigger_events
La visibilité des métadonnées dans les vues de catalogue est limitée aux objets sécurisés qu’un utilisateur possède ou sur lesquels il a obtenu une autorisation. Pour plus d’informations, consultez Configuration de la visibilité des métadonnées.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Nécessite l’adhésion au rôle public. La définition des objets utilisateur est visible par le propriétaire de l’objet ou les bénéficiaires qui disposent de l’une des autorisations suivantes : MODIFIER, CONTRÔLER, PRENDRE POSSESSION ou AFFICHER LA DÉFINITION. Ces autorisations sont implicitement détenues par les membres des rôles de base de données fixes db_owner, db_ddladmin et db_securityadmin.

sys.sql_expression_dependencies
Nécessite une autorisation de DÉFINITION de VUE sur la base de données et SÉLECTIONNEZ autorisation sur sys.sql_expression_dependencies pour la base de données. Par défaut, l’autorisation SELECT n’est accordée qu’aux membres du rôle de base de données fixe db_owner. Lorsque des autorisations de SÉLECTION et de DÉFINITION d’AFFICHAGE sont accordées à un autre utilisateur, le bénéficiaire peut afficher toutes les dépendances de la base de données.

Utilisation de SQL Server Management Studio

pour afficher 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, puis développez cette instance.

  2. Développez la base de données souhaitée, développez les tables, puis développez la table contenant le déclencheur pour lequel vous souhaitez afficher la définition.

  3. Développez Déclencheurs, cliquez avec le bouton droit sur le déclencheur souhaité, puis cliquez sur Modifier. La définition du déclencheur DML apparaît 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, puis développez cette instance.

  2. Développez la base de données souhaitée, développez les tables, puis développez la table contenant le déclencheur et ses dépendances que vous souhaitez afficher.

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

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

    Pour afficher les objets dont dépend le DML, sélectionnez les objets dont dépend < le nom de 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é, des informations sont fournies dans les zones Nom, Type et Type de dépendance.

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

Utilisation de Transact-SQL

Pour afficher la définition d’un déclencheur DML

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

  2. Dans la barre Standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l’un des exemples suivants dans la fenêtre de requête et cliquez sur Exécuter. Chaque exemple montre comment afficher la définition du déclencheur 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 

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

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

  2. Dans la barre Standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l’un des exemples suivants dans la fenêtre de requête et cliquez sur Exécuter. Chaque exemple montre comment vous pouvez afficher les dépendances du déclencheur 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 

Pour afficher des 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 Standard, cliquez sur Nouvelle requête.

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

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 

Pour afficher des informations sur les événements déclenchant un déclencheur DML

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

  2. Dans la barre Standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l’un des exemples suivants dans la fenêtre de requête et cliquez sur Exécuter. Chaque exemple montre comment afficher les événements déclenchant le déclencheur 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 

Voir aussi

CRÉER UN DÉCLENCHEUR (Transact-SQL)
DÉPOSER UN DÉCLENCHEUR (Transact-SQL)
ACTIVER LE DÉCLENCHEUR (Transact-SQL)
DÉSACTIVER LE DÉCLENCHEUR (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename(Transact-SQL)
MODIFIER LE DÉCLENCHEUR (Transact-SQL)
sp_help (Transact-SQL)
sp_helptrigger(Transact-SQL)
sys.déclencheurs (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

Votre adresse e-mail ne sera pas publiée.