Partage via


Implémenter des notifications d'événements

S'applique à : SQL Server

Pour implémenter une notification d'événement, vous devez créer un service cible destiné à recevoir les notifications d'événements avant de créer la notification d'événement.

Important

Service Broker doit être configurée pour les notifications d'événements qui envoient des messages à un Service Broker résidant sur un serveur distant. La sécurité du dialogue doit être configurée manuellement conformément au modèle de sécurité totale.

Création du service cible

Vous n’avez pas besoin de créer un service de lancement Service Broker, car le courtier de service comprend le type de message et le contrat suivants pour les notifications d’événement :

https://schemas.microsoft.com/SQL/Notifications/PostEventNotification  

Le service cible qui reçoit les notifications d'événements doit respecter ce contrat préexistant.

Pour créer un service cible:

  1. Créez une file d'attente pour recevoir les messages.

    Remarque

    Cette file d'attente reçoit le type de message suivant : http://schemas.microsoft.com/SQL/Notifications/QueryNotification.

  2. Créez un service dans la file d'attente qui fasse référence au contrat de notification d'événement.

  3. Créez un itinéraire au niveau du service pour indiquer l’adresse à laquelle Service Broker doit expédier les messages pour le service. Si la notification d'événement a pour cible un service de la même base de données, spécifiez ADDRESS = 'LOCAL'.

    Remarque

    L’acheminement Service Broker désigne le service appelé à recevoir les messages de notification. Si votre notification d'événement a pour cible un service de serveur distant, il convient de définir des itinéraires à la fois sur le serveur source et sur le serveur cible pour éviter des erreurs de communication bidirectionnelle.

L'exemple suivant illustre la création d'une file d'attente, d'un service au niveau de cette file d'attente, et d'un itinéraire au niveau du service en vue de gérer les messages relevant du contrat de notification d'événement.

CREATE QUEUE NotifyQueue ;  
GO  
CREATE SERVICE NotifyService  
ON QUEUE NotifyQueue  
(  
[http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]  
);  
GO  
CREATE ROUTE NotifyRoute  
WITH SERVICE_NAME = 'NotifyService',  
ADDRESS = 'LOCAL';  
GO  

Création de la notification d'événement

Les notifications d’événements sont créées à l’aide de l’instruction Transact-SQL CREATE EVENT NOTIFICATION et supprimées à l’aide de l’instruction DROP EVENT NOTIFICATION. Pour modifier une notification d'événement, vous devez la supprimer et la recréer.

L'exemple suivant crée la notification d'événement CreateDatabaseNotification. Cette notification envoie un message à propos de tout événement CREATE_DATABASE qui se produit sur le serveur au service NotifyService précédemment créé.

CREATE EVENT NOTIFICATION CreateDatabaseNotification  
ON SERVER  
FOR CREATE_DATABASE  
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;  

Attention

Les notifications d’événements reconnaissent les événements CREATE_SCHEMA et les définitions <schema_element> des instructions CREATE SCHEMA comme événements distincts. Par exemple, une notification d'événement est créée sur les deux événements CREATE_SCHEMA et CREATE_TABLE, et vous exécutez le traitement suivant.

CREATE SCHEMA s

CREATE TABLE t1 (col1 int)

Dans ce cas, la notification d'événement est déclenchée deux fois : une première fois quand se produit l'événement CREATE_SCHEMA, et une deuxième fois quand se produit l'événement CREATE_TABLE. Nous recommandons d’éviter de créer des notifications d’événements sur les événements CREATE_SCHEMA et les textes <schema_element> des définitions CREATE SCHEMA correspondantes, ou de créer une logique dans votre application destinée à éviter la capture des données d’événement non souhaitées.

Pour créer une notification d'événement

Pour supprimer une notification d'événement

Voir aussi

Obtenir des informations concernant les notifications d'événements
EVENTDATA (Transact-SQL)