Conception de notifications d'événements

Mis à jour : 14 avril 2006

Pour concevoir une notification d'événement, vous devez déterminer les éléments suivants :

  • Portée de la notification
  • L'instruction Transact-SQL, ou groupe d'instructions, qui déclenche la notification d'événement.

Définition de la portée d'une notification

Vous pouvez définir une notification d'événement qui s'exécute en réponse à une instruction portant sur tous les objets de la base de données active ou sur tous les objets d'une instance SQL Server. Les notifications spécifiées dans les événements QUEUE_ACTIVATION et BROKER_QUEUE_DISABLED ont une portée limitée aux files d'attente individuelles. Certains événements ne peuvent pas se produire dans toutes les portées. Par exemple, les événements CREATE_DATABASE ne peuvent se produire qu'au niveau de l'instance du serveur. En revanche, une notification créée sur un événement ALTER_TABLE peut être programmée pour s'exécuter sur toutes les tables de la base de données ou sur toutes les tables de l'instance de serveur.

L'exemple suivant envoie à l'instance Service Broker de la base de données en cours la notification d'une instruction ALTER TABLE exécutée sur l'instance de serveur.

CREATE EVENT NOTIFICATION log_ddl1 
   ON SERVER 
   FOR ALTER_TABLE 
   TO SERVICE '//Adventure-Works.com/ArchiveService' , 'current database';

Vous trouverez des liens menant aux instructions Transact-SQL et les étendues qui peuvent être spécifiées pour ces dernières dans la section « Sélection d'une instruction DDL particulière pour déclencher une notification d'événement » ci-après.

Les notifications d'événements ne s'exécutent pas en réponse aux événements affectant les procédures stockées et les tables temporaires locales ou globales.

Spécification d'une instruction ou d'un groupe d'instructions Transact-SQL

Vous pouvez créer des notifications d'événements qui s'exécutent en réponse à :

  • Une instruction DDL particulière, un événement de trace SQL ou un événement Service Broker
  • Un groupe prédéfini d'instructions DDL ou d'événements de trace SQL

Sélection d'une instruction DDL particulière pour déclencher une notification d'événement

Les notifications d'événements peuvent être conçues pour se déclencher après l'exécution d'une instruction Transact-SQL ou d'une procédure stockée particulière. Comme illustré dans l'exemple précédent, cette notification d'événement se produit après un événement ALTER_TABLE.

La liste des instructions Transact-SQL qui peuvent être spécifiées pour déclencher une notification d'événement et de la portée à laquelle les notifications peuvent s'exécuter figure dans Instructions DDL à utiliser avec les notifications d'événements. Vous pouvez également vous procurer ces événements en interrogeant l'affichage catalogue sys.event_notification_event_types.

ms175854.note(fr-fr,SQL.90).gifRemarque :
Certaines procédures stockées système qui effectuent des opérations de type DDL peuvent également déclencher des notifications d'événements. Testez vos notifications d'événements pour déterminer leurs réponses aux procédures stockées système exécutées. Par exemple, l'instruction CREATE TYPE et la procédure stockée sp_addtype déclenchent toutes les deux une notification d'événement générée dans un événement CREATE_TYPE. En revanche, la procédure stockée sp_rename ne déclenche aucune notification d'événement.

Sélection d'un événement de trace SQL particulier pour déclencher une notification d'événement

Les notifications d'événements peuvent être conçues pour se déclencher après un événement de trace SQL. Par exemple, la notification d'événement suivante se déclenche après un événement Object_Created sur le serveur.

CREATE EVENT NOTIFICATION log_ddl1 
   ON SERVER 
   FOR Object_Created 
   TO SERVICE '//Adventure-Works.com/ArchiveService', 'current database' ;

Pour obtenir une liste des événements de trace SQL susceptibles de déclencher une notification d'événement, consultez Événements de trace utilisables avec les notifications d'événements. Vous pouvez également vous procurer une liste de ces événements en interrogeant l'affichage catalogue sys.event_notification_event_types. Les événements de trace SQL ne peuvent être exécutés qu'avec la portée d'instance de serveur. Pour plus d'informations sur les classes d'événements de trace SQL, consultez Guide de référence du Générateur de profils SQL Server.

Sélection d'un événement Service Broker pour déclencher une notification d'événement

Les notifications d'événements peuvent être conçues pour se déclencher après un événement Service Broker QUEUE_ACTIVATION ou BROKER_QUEUE_DISABLED. L'événement QUEUE_ACTIVATION se produit lorsqu'une file d'attente contient des messages à traiter. Pour plus d'informations, consultez Event-Based Activation. L'événement BROKER_QUEUE_DISABLED se produit lorsqu'une file d'attente a le statut OFF. Pour plus d'informations, consultez Handling Poison Messages.

Sélection d'un groupe prédéfini d'instructions DDL pour déclencher une notification d'événement

Une notification d'événement peut se produire après l'exécution d'un événement Transact-SQL appartenant à un regroupement prédéfini d'événements similaires. Par exemple, si vous souhaitez qu'une notification d'événement se produise après l'exécution d'une instruction CREATE TABLE, ALTER TABLE ou DROP TABLE, vous pouvez spécifier FOR DDL_TABLE_EVENTS dans l'instruction CREATE EVENT NOTIFICATION. Après l'exécution de CREATE EVENT NOTIFICATION, les événements appartenant au même groupe sont ajoutés à l'affichage catalogue sys.events.

Pour obtenir la liste des groupes prédéfinis d'instructions DDL et DML disponibles pour les notifications d'événements, les instructions qu'elles couvrent et la portée d'exécution de ces groupes d'événements, consultez Groupes d'événements DDL à utiliser avec les notifications d'événements.

Sélection d'un groupe prédéfini d'événements de trace SQL pour déclencher une notification d'événement

Une notification d'événement peut se déclencher après n'importe quel événement de trace SQL appartenant à un regroupement prédéfini d'événements de trace similaires. Par exemple, si vous souhaitez qu'une notification d'événement soit exécutée après n'importe quel événement de trace lié au verrouillage, lequel inclut les événements LOCK_DEADLOCK, LOCK_DEADLOCK_CHAIN, LOCK_ESCALATION et DEADLOCK_GRAPH, vous pouvez spécifier FOR TRC_LOCKS dans l'instruction CREATE EVENT NOTIFICATION.

Pour obtenir la liste des groupes prédéfinis d'événements de trace SQL disponibles pour les notifications d'événements, consultez Groupes d'événements de trace à utiliser avec des notifications d'événement. Ces groupes ne peuvent s'exécuter qu'au niveau de l'instance de serveur.

Voir aussi

Concepts

Présentation des notifications d'événements
Implémentation de notifications d'événements

Autres ressources

EVENTDATA (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

14 avril 2006

Nouveau contenu :
  • Ajout d'une remarque recommandant de tester les notifications d'événements pour déterminer leurs réponses aux procédures stockées exécutées.
  • Ajout de références dans l'affichage catalogue sys.event_notification_event_types.

5 décembre 2005

Contenu modifié :
  • Ajout à la section « Sélection d'une instruction DDL particulière pour déclencher une notification d'événement » d'informations relatives aux notifications qui peuvent se produire après l'exécution de certaines procédures stockées.