Partager via


Création d'abonnements aux notifications de requêtes

L'abonnement à une notification consiste à créer une commande, à attacher une demande de notification à la commande puis à exécuter celle-ci. Les abonnements aux notifications de requêtes doivent être créés à partir d'une interface d'accès à la base de données. Transact-SQL ne fournit pas un mécanisme pour créer des abonnements aux notifications de requêtes.

Le moteur de base de données inscrit immédiatement la notification pour l'instruction Transact-SQL de la commande. Pour chaque instruction qui ne satisfait pas aux contraintes d'une notification de requête, le moteur de base de données crée immédiatement une notification. Pour les instructions qui satisfont aux contraintes, un abonnement est créé. Vous devez éviter l'envoi au serveur d'une commande qui contient à la fois des instructions qui satisfont aux contraintes et des instructions qui n'y satisfont pas.

ms188669.note(fr-fr,SQL.90).gifRemarque :
Transact-SQL n'offre pas de possibilité d'abonnement aux notifications. Les classes d'accès aux données CLR hébergées dans SQL Server ne prennent pas en charge les notifications de requêtes.

Chaque abonnement à une notification de requête génère un événement de notification. Une fois que la notification s'est produite, SQL Server supprime l'abonnement à celle-ci. Par conséquent, une application qui doit de nouveau être notifiée doit demander une nouvelle notification sur la commande qui extrait les données modifiées.

La demande d'une notification de requête n'est pas transactionnelle. Lorsque vous demandez une notification sur une commande, le moteur de base de données inscrit la notification, que la transaction qui contient la commande soit ou non validée ou restaurée.

Les abonnements aux notifications d'une requête sont stockés dans la base de données dans laquelle la requête est exécutée. La vue de gestion dynamique sys.dm_qn_subscriptions présente les informations sur les abonnements aux notifications de requêtes actuellement actifs. L'affichage catalogue sys.internal_tables indique l'espace utilisé par les abonnements aux notifications de requêtes actuellement actifs.

Sélection d'une stratégie d'abonnement aux notifications à l'aide du fournisseur managé SqlClient

Vous pouvez demander un abonnement aux notifications de deux manières. Une dépendance fournit une interface de haut niveau avec les notifications de requêtes. Une application crée simplement une instance d'une classe de dépendances (par exemple, SqlDependency dans ADO.NET), inscrit un gestionnaire pour recevoir l'événement de notification et ajoute l'objet de dépendance à une commande de requête. L'objet de dépendance appelle le gestionnaire lorsque la notification se produit.

Une demande de notification fournit une interface plus souple et de niveau moins élevé avec les notifications de requêtes. À l'image d'une dépendance, une application crée une demande de notification (par exemple, une instance de SqlNotificationRequest dans ADO.NET) et attache la demande à une commande de requête. À la différence d'une dépendance, une demande de notification demande simplement un abonnement à la notification de la requête. L'application elle-même doit extraire les messages de notification de la base de données, les traiter et réagir en conséquence. Cela confère davantage de souplesse à la conception des applications, mais suppose un peu plus d'effort. Une demande de notification convient aux applications qui doivent gérer les notifications avec une certaine souplesse. Par exemple, une application dont l'exécution est planifiée ne peut pas recourir à une dépendance, dans la mesure où l'objet de dépendance est détruit à la fin de l'utilisation de l'application. Toutefois, avec une demande de notification, l'application peut vérifier la file d'attente au démarrage et, le cas échéant, actualiser le cache de données local.

Les applications utilisent une dépendance lorsque l'application qui inscrit l'abonnement à une notification est également celle qui traitera celle-ci, lorsque l'application demeurera exécutée en permanence et lorsque la connectivité à la base de données est disponible pendant l'exécution de l'application. Dans le cas des applications qui satisfont à ces contraintes, les dépendances permettent d'utiliser facilement les notifications de requêtes. Une application utilise une demande de notification lorsqu'elle ne peut pas utiliser une dépendance. Dans ce cas, le développeur de l'application doit concevoir une stratégie pertinente pour la réception et le traitement des messages.

Utilisation de SOAP pour les notifications

La prise en charge native de HTTP SOAP comprend les notifications de requêtes. Une demande SOAP qui comprend l'en-tête <notificationRequest> crée un abonnement à la notification d'une requête. Comme dans le cas de SqlNotificationRequest, le demandeur doit extraire les messages de notification de la base de données, les traiter et réagir en conséquence. Cette approche convient aux applications de services Web, dans la mesure où elle ne nécessite pas une connexion permanente à SQL Server.

Utilisation de SQL Native Client pour les notifications

Les applications qui utilisent le fournisseur OLE DB de SQL Server Native Client ou le pilote ODBC peuvent également soumettre des demandes de notification. Pour plus d'informations sur l'utilisation de notifications de requêtes avec les applications SQL Server Native Client, consultez Working with Query Notifications.

Voir aussi

Concepts

Moments auxquels les notifications de requêtes se produisent
Utilisation de SqlDependency pour s'abonner à des notifications de requêtes
Utilisation de SqlNotificationRequest pour s'abonner aux notifications de requêtes

Aide et Informations

Assistance sur SQL Server 2005