Vue NS<NotificationClassName>NotificationDistribution
Combine des données issues de plusieurs tables internes Microsoft SQL Server Notification Services pour fournir des informations sur les tentatives de distribution des notifications. Notification Services crée une vue pour chaque classe de notification à l'aide de la convention de dénomination suivante : NSNotificationClassNameNotificationDistribution.
Par exemple, l'exemple Stock fourni avec Notification Services comporte deux classes de notification : StockNotifications et PortfolioNotifications. Les vues associées sont nommées NSStockNotificationsNotificationDistribution et NSPortfolioNotificationsNotificationDistribution.
Les vues NSNotificationClassNameNotificationDistribution contiennent des colonnes affichées dans la table suivante.
Colonne | Type de données | Description |
---|---|---|
NotificationId |
bigint |
Numéro d'ID de notification. |
DeliveryChannelName |
nvarchar (255) |
Nom du canal de remise utilisé pour remettre la notification. |
DistributorName |
nvarchar(255) |
Nom du serveur de distribution utilisé pour remettre la notification. |
DeliveryRequestTime |
datetime |
Date et heure auxquelles le serveur de distribution a transmis les données de notification au protocole de remise. |
SentTime |
datetime |
Heure d'envoi de la notification. |
DeliveryStatusDescription |
nvarchar(255) |
Statut de la tentative de remise : aucun essai, succès ou échec. Pour plus d'informations, consultez la section Notes. |
DeliveryStatusInfo |
nvarchar(2048) |
Message d'état retourné par le protocole de remise au serveur de distribution lors du signalement du statut de notification. Il est généralement utilisé pour signaler la raison d'un échec. La valeur NULL indique qu'aucun message d'état n'a été envoyé. |
NotificationText |
nvarchar(2048) |
Texte de notification. |
SubscriberId |
nvarchar(255) |
ID de l'abonné pour la notification. |
DeviceName |
nvarchar(255) |
Nom du dispositif de remise spécifié dans l'abonnement. |
SubscriberLocale |
nvarchar(10) |
Paramètres régionaux de l'abonné pour la notification. |
Champs de classe de notification (1-n) |
application-defined |
Toutes les colonnes spécifiées dans la classe de notification s'affichent également dans cette vue. |
LinkNotificationId |
bigint |
L'ID de la première notification comprise dans le digest lors d'une remise de ce même type. Toutes les notifications ultérieures dans le digest contiennent cet ID. La valeur NULL indique que la notification n'est pas de ce type dans un digest. |
Notes
Les vues NSNotificationClassNameNotificationDistribution sont situées dans les bases de données de l'application.
La quantité des données disponibles dans cette vue est contrôlée par les paramètres d'enregistrement du serveur de distribution dans la définition de l'application. Ces paramètres d'exécution de l'application contrôlent les écritures sur le journal de distribution, c'est ainsi que sont contrôlées les disponibilités sur cette vue. Pour plus d'informations, consultez Configuration de la journalisation sur le serveur de distribution.
Une notification unique peut comporter plusieurs lignes dans la vue NSNotificationClassNameNotificationDistribution, en d'autres termes, une pour chaque tentative de remise. Par exemple, si une tentative de remise de notification échoue deux fois avant de finalement réussir, la notification aura trois lignes dans cette vue tant que les données n'ont pas été supprimées par le Vaccuumer.
Utilisez la colonne DeliveryStatusDescription pour déterminer le statut de remise de la notification. Le tableau suivant contient les descriptions des codes de statut.
Valeur DeliveryStatusDescription | Description |
---|---|
Remise non encore effectuée : première tentative en attente |
Le serveur de distribution n'a pas encore essayé de remettre la notification. Ceci est sans doute dû aux paramètres de l'application, à un retard de notifications à distribuer, à un problème de distribution, tel qu'un serveur de distribution désactivé ou un nombre excessif d'échecs (sous contrôle du paramètre FailuresBeforeAbort). |
Remise réussie |
Le protocole de remise a retourné une valeur qui indique une remise réussie. |
Échec de la remise |
Un des événements suivants s'est produit :
|
Pour résoudre le problème des remises échouées, cherchez les messages d'erreur dans le journal des applications dans l'Observateur d'événements Microsoft. Notez que plusieurs erreurs peuvent être consignées dans le journal pour un seul échec de remise, cherchez la description de chaque message d'erreur Notification Services.
Autorisations
Cette vue est disponible aux membres des rôles de serveur sysadmin et db_owner, ainsi qu'au rôle NSAnalysis de Notification Services.
Exemple
Exécutez la requête suivante sur l'exemple Stock afin de déterminer si les tentatives de remise de la notification ont échoué :
USE StockInstanceStock;
SELECT NotificationId, DeliveryStatusInfo
FROM NSStockNotificationsNotificationDistribution
WHERE DeliveryStatusDescription = N'Delivery failed';
La requête ci-dessus retourne toutes les notifications échouées, qui n'ont pas été supprimées par le Vaccuumer. Si une notification a eu plusieurs tentatives de remise échouées, la requête retourne une ligne pour chaque échec.
Pour retourner une liste des notifications qui ont échoué au moins une fois, depuis l'exemple Stock, exécutez la requête suivante :
USE StockInstanceStock;
SELECT DISTINCT(NotificationId)
FROM NSStockNotificationsNotificationDistribution
WHERE DeliveryStatusDescription = N'Delivery failed';
Voir aussi
Référence
Autres ressources
Configuration de la journalisation sur le serveur de distribution