Définition de chroniques pour une classe d'abonnement
Les tables de chroniques d'abonnements stockent les données d'abonnement pour qu'elles puissent être utilisées dans votre application. Vous pouvez par exemple utiliser une table de chroniques d'abonnements pour stocker des informations sur la dernière notification remise à un abonné, et générer la notification suivante basée uniquement sur les données qui sont arrivées dans l'intervalle.
Utilisations courantes des chroniques d'abonnements
Les chroniques d'abonnements enregistrent généralement des données sur les notifications précédentes. Lorsque vous générez des notifications, votre application peut utiliser ces donnée pour déterminer quand l'abonné a reçu une notification pour la dernière fois ou si l'abonné a reçu une notification similaire.
Un bon exemple de cas d'utilisation d'une table de chroniques d'abonnements est une application dans laquelle vous voulez limiter chaque abonné à une notification par période. Vous pouvez définir une chronique d'abonnements contenant une ligne par abonné et possédant un cachet temporel qui indique quand la dernière notification a été générée.
Lorsque vous générez des notifications, vous pouvez inclure une condition pour générer des notifications uniquement si l'abonné n'a pas reçu de notification durant les dernières 24 heures. Si l'abonné n'a pas reçu de notification récemment, vous ajoutez la notification à la table de notifications et mettez à jour le cachet temporel dans la chronique d'abonnements.
Tables de chroniques d'abonnements
Les chroniques d'abonnements sont implémentées en tant que tables. Lorsque vous définissez une classe d'abonnement, vous pouvez définir zéro, une ou plusieurs tables de chroniques en utilisant l'instruction Transact-SQL CREATE TABLE. Cette instruction doit comprendre le nom de table, les noms des champs et le type de données des champs. L'instruction peut également inclure des arguments pour les contraintes et tous les autres paramètres CREATE TABLE facultatifs. Vous pouvez également inclure une instruction CREATE INDEX pour créer un index sur votre table de chroniques d'événements. Pour plus d'informations, consultez CREATE TABLE (Transact-SQL).
Notification Services ne renomme pas automatiquement les tables de chroniques d'abonnements lors de la mise à jour de l'application, comme il le fait pour les autres tables d'abonnement. Les instructions qui créent une table de chroniques échouent si une autre table porte le même nom. Utilisez la vue INFORMATION_SCHEMA.TABLES pour vérifier si la table existe, puis ignorez la création de la table ou supprimez et recréez la table.
L'exemple suivant montre comment supprimer une table existante portant le nom dbo.SubscriberHistory, puis créer une chronique pour la classe d'abonnement StockSubscriptions qui a deux colonnes ( SubscriberId et NotificationTime) :
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'SubscriptionHistory'
AND TABLE_SCHEMA = 'dbo')
DROP TABLE dbo.SubscriberHistory;
CREATE TABLE dbo.SubscriberHistory
(
SubscriberId nvarchar(255),
LastNotified datetime
);
Remarque : |
---|
Si vous définissez une application dans un fichier XML, remplacez les caractères réservés XML, tels que « > », par leurs références d'entité. Pour plus d'informations, consultez XML Reserved Characters. |
Pour définir une table de chroniques d'abonnements
Si vous définissez une application en utilisant XML, définissez les chroniques dans le fichier de définition d'application. Si vous définissez une application par programme, utilisez les objets NMO (Notification Services Management Objects) pour définir les chroniques.
Mise à jour des chroniques d'abonnements
Vous pouvez définir une ou plusieurs requêtes pour manipuler les données des tables de chroniques d'abonnements. Ces requêtes insèrent, mettent à jour et suppriment les données dans les tables des chroniques pour maintenir ces dernières dans un état approprié à l'utilisation de votre application.
Vous devez définir les règles de chroniques d'abonnements dans un nouvel événement ou une règle d'abonnement planifiée, ou en tant que nouvelle règle d'abonnement.
Remarque : |
---|
Il n'existe aucune garantie sur l'ordre d'activation entre plusieurs règles d'événement ou plusieurs règles planifiées. |
Le code suivant montre comment mettre à jour une chronique d'abonnements pour une application boursière. La chronique d'abonnements effectue le suivi de la dernière génération d'une notification pour chaque abonné.
UPDATE dbo.SubscriberHistory
SET LastNotified = GETUTCDATE()
FROM dbo.StockSub s
JOIN dbo.SubscriberHistory h
ON s.SubscriberId = h.SubscriberId
JOIN dbo.EventChron ec
ON ec.Updated > h.LastNotified;
Cette règle suppose l'utilisation de la chronique d'événements pour générer les notifications avant de mettre à jour la chronique d'abonnements SubscriberHistory. Vous devez ajouter cette règle à la règle d'abonnement qui génère les notifications, et non la placer dans une nouvelle règle d'abonnement.
Pour plus d'informations sur les règles d'abonnement, consultez Définition de règles d'abonnement.
Voir aussi
Concepts
Définition de chroniques pour une classe d'événements
Autres ressources
Définition de classes d'abonnement
UPDATE (Transact-SQL)
SET (Transact-SQL)
IF...ELSE (Transact-SQL)
EXISTS (Transact-SQL)
CREATE TABLE (Transact-SQL)