Partager via


Obtenir des informations sur les déclencheurs DML

Cette rubrique explique comment obtenir des informations sur les déclencheurs DML dans SQL Server 2012 à l'aide de SQL Server Management Studio ou de 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é

  • 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.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 Configuration de la visibilité des métadonnées.

  • OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
    Il est indispensable d'être membre du 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 les membres de rôles de base de données fixes db_owner, db_ddladmin et 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.

Icône de flèche utilisée avec le lien Retour en haut[Top]

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'objet, pour afficher les objets qui dépendent du déclencheur DML, sélectionnez Objets dépendant de <nom du déclencheur DML>. Les objets apparaissent dans la zone Dépendances.

    Pour afficher les objets dont le DML dépend, 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, Type et Type de dépendance.

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

Icône de flèche utilisée avec le lien Retour en haut[Top]

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

Icône de flèche utilisée avec le lien Retour en haut[Top]

Voir aussi

Référence

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)