Utilisation des notifications de requêtes

SQL Server 2005 introduit les notifications de requêtes, une nouvelle fonctionnalité qui permet à une application de demander une notification à SQL Server lorsque les résultats d'une requête changent. Les notifications de requêtes permettent aux programmeurs de concevoir des applications qui interrogent la base de données uniquement lorsqu'une modification se produit dans les informations que l'application a récupérées précédemment.

Par exemple, une application de catalogue en ligne peut mettre en cache les résultats d'une requête qui répertorie les éléments en vente. L'application présente le catalogue en fonction des données mises en cache. Lorsque la liste des éléments à vendre change, un gestionnaire d'événements dans l'application reçoit l'événement de notification et supprime les données mises en cache. La prochaine fois qu'un client demandera la liste des éléments à vendre, l'application interrogera la base de données pour en extraire les données actuelles et renouvellera l'abonnement de notification.

Les applications peuvent tirer profit des notifications de requêtes pour réduire les allers-retours vers la base de données. Au lieu d'écrire du code pour réexécuter régulièrement une requête afin de conserver des résultats à jour, les développeurs peuvent concevoir des applications qui sont automatiquement notifiées lorsque les résultats d'une requête peuvent être obsolètes. Grâce aux notifications de requêtes, l'application exécute une commande qui contient une requête et une demande de notification. L'application met en cache les résultats de la requête ou le contenu dynamique généré à partir des résultats de la requête. Lorsque l'application reçoit la notification de requête, elle efface le contenu mis en cache. L'application répète la requête et la demande de notification lorsqu'elle a besoin des résultats actualisés de la requête.

Le Moteur de base de données utilise les abonnements de notification pour effectuer le suivi des notifications de requêtes. Lorsqu'une commande contient une demande de notification, la base de données inscrit la demande en tant qu'abonnement de notification, puis exécute la commande.

Le Moteur de base de données utilise Service Broker pour remettre les messages de notification. Par conséquent, Service Broker doit être actif dans la base de données où l'application demande l'abonnement. La fonctionnalité de notification de requête ne requiert pas et n'utilise pas Notification Services. Les notifications de requêtes sont indépendantes des notifications d'événements.

Pour recevoir un message de notification dans une base de données autre que celle qui contient l'abonnement, la base de données qui contient l'abonnement doit avoir la propriété TRUSTWORTHY définie à ON. Pour plus d'informations, consultez ALTER DATABASE (Transact-SQL).