Présentation des notifications d'événements
Les notifications d'événements sont exécutées en réponse à une variété d'instructions en langage de définition de données (DDL) Transact-SQL et d'événements SQL Trace, par l'envoi d'informations relatives à ces événements à un service Service Broker.
Les notifications d'événements peuvent être utilisées pour effectuer les opérations suivantes :
enregistrer dans un journal et examiner les modifications ou l'activité de la base de données ;
réaliser une action en réponse à un événement de manière asynchrone plutôt que synchrone.
Les notifications d'événements peuvent constituer une alternative de programmation aux déclencheurs DDL et à SQL Trace.
Elles sont exécutées de manière asynchrone, en dehors de la portée d'une transaction. Ainsi, contrairement aux déclencheurs DDL, les notifications d'événements peuvent être utilisées dans une application de base de données pour répondre à des événements sans recourir aux ressources définies par la transaction immédiate. Pour plus d'informations, consultez Comparaison des notifications d'événements et des déclencheurs.
Contrairement à SQL Trace, les notifications d'événements peuvent être utilisées pour exécuter une action dans SQL Server en réponse à un événement SQL Trace. Pour plus d'informations, consultez Notifications d'événements et trace SQL.
Lorsqu'une notification d'événement est créée, une ou plusieurs conversations Service Broker entre une instance de SQL Server et le service cible spécifié sont ouvertes. Les conversations restent en général ouvertes tant que la notification d'événement existe en tant qu'objet sur l'instance de serveur. Dans certains cas d'erreur, les conversations peuvent être interrompues avant la suppression de la notification d'événement. Ces conversations ne sont jamais partagées entre les notifications d'événements. Toutes les notifications d'événements possèdent leurs propres conversations exclusives. L'interruption d'une conversation interdit explicitement au service cible de recevoir davantage de messages ; en outre, la conversation ne rouvrira pas au déclenchement suivant de la notification d'événement.
Les informations sur l'événement sont livrées au Service Broker sous forme de variable de type xml qui fournit des informations sur l'heure à laquelle un événement se produit, l'objet de base de données concerné, l'instruction du traitement Transact-SQL impliquée, ainsi que d'autres informations. Pour plus d'informations sur le schéma XML produit par les notifications d'événements, consultez EVENTDATA (Transact-SQL).
Les données des événements peuvent être utilisées par les applications exécutés avec SQL Server pour en suivre la progression et prendre des décisions. Par exemple, la notification d'événement suivante envoie un avis à un certain service à chaque fois qu'une instruction ALTER TABLE est émise dans l'exemple de base de données AdventureWorks.
USE AdventureWorks
GO
CREATE EVENT NOTIFICATION NotifyALTER_T1
ON DATABASE
FOR ALTER_TABLE
TO SERVICE '//Adventure-Works.com/ArchiveService' ,
'8140a771-3c4b-4479-8ac0-81008ab17984';
Un exemple de script de notifications d'événements exécutable sur l'exemple de base de données AdventureWorks, EventNotificationSample.sql, est proposé dans les Exemples pour le moteur de base de données SQL Server. Pour plus d'informations, consultez Event Notifications Sample.