Comparaison des notifications d'événements et des déclencheurs

Le tableau suivant répertorie les similitudes et les différences entre les déclencheurs et les notifications d'événements.

DÉCLENCHEURS

NOTIFICATIONS D'ÉVÉNEMENTS

Les déclencheurs DML répondent aux événements DML (Data Manipulation Language, ou langage de manipulation de données). Les déclencheurs DDL répondent aux événements DDL (Data Definition Language, ou langage de définition de données).

Les notifications d'événements répondent aux événements DDL et à un sous-ensemble d'événements de trace SQL.

Les déclencheurs peuvent exécuter Transact-SQL ou le code managé CLR (Common Language Runtime).

Les notifications d'événements n'exécutent aucun code. En fait, elles envoient des messages xml à un service Service Broker.

Les déclencheurs sont traités de manière synchrone, dans le cadre des transactions qui provoquent leur déclenchement.

Les notifications d'événements peuvent être traitées de manière synchrone, et elles ne sont pas exécutées dans le cadre des transactions qui provoquent leur déclenchement.

Le consommateur d'un déclencheur est étroitement lié à l'événement qui provoque son déclenchement.

Le consommateur d'une notification d'événement est dissocié de l'événement qui provoque son déclenchement.

Les déclencheurs doivent être traités sur le serveur local.

Les notifications d'événements peuvent être traitées sur un serveur distant.

Les déclencheurs peuvent être restaurés.

Les notifications d'événements ne peuvent pas être restaurées.

Les noms de déclencheurs DML sont limités au niveau du schéma. Les noms de déclencheurs DDL sont limités au niveau de la base de données ou du serveur.

Les noms de notifications d'événements sont limités par le serveur ou la base de données. Les notifications d'événements sur un événement QUEUE_ACTIVATION sont limitées à une file d'attente spécifique.

Les déclencheurs DML sont détenus par le propriétaire des tables sur lesquelles ils sont appliqués.

Le propriétaire d'une notification d'événements sur une file d'attente peut être différent de celui de l'objet auquel la notification est appliquée.

Les déclencheurs prennent en charge la clause EXECUTE AS.

Les notifications d'événements ne prennent pas en charge la clause EXECUTE AS.

Les informations d'événement de déclencheur DDL peuvent être capturées à l'aide de la fonction EVENTDATA, qui retourne un type de données xml.

Les notifications d'événements envoient des informations d'événement xml à un service Service Broker. Les informations sont mises en forme dans le même schéma que celui de la fonction EVENTDATA.

Les métadonnées concernant les déclencheurs se trouvent dans les vues de catalogue sys.triggers et sys.server_triggers.

Les métadonnées concernant les notifications d'événements se trouvent dans les vues de catalogue sys.event_notifications et sys.server_event_notifications.