NS<NotificationClassName>NotificationDistribution 视图

将来自若干个内部 Microsoft SQL Server Notification Services 表的数据组合起来,以提供有关通知分发尝试的信息。Notification Services 使用以下命名约定为每个通知类创建一个视图:NSNotificationClassNameNotificationDistribution

例如,随 Notification Services 提供的 Stock 示例有两个通知类:StockNotificationsPortfolioNotifications。关联的视图被命名为 NSStockNotificationsNotificationDistributionNSPortfolioNotificationsNotificationDistribution

NSNotificationClassNameNotificationDistribution 视图包含下表中显示的列。

数据类型 说明

NotificationId

bigint

通知 ID 号。

DeliveryChannelName

nvarchar (255)

用于传递通知的传递通道的名称。

DistributorName

nvarchar(255)

用于传递通知的分发服务器的名称。

DeliveryRequestTime

datetime

分发服务器将通知数据传递到传递协议以进行传递的日期和时间。

SentTime

datetime

实际发送通知的时间。

DeliveryStatusDescription

nvarchar(255)

传递尝试的状态:未尝试、成功或失败。有关详细信息,请参阅“备注”部分。

DeliveryStatusInfo

nvarchar(2048)

报告通知状态时传递协议返回分发服务器的状态消息。此消息通常用于报告失败原因。NULL 指示未发送状态消息。

NotificationText

nvarchar(2048)

通知的文本。

SubscriberId

nvarchar(255)

通知的订阅方的 ID。

DeviceName

nvarchar(255)

订阅中指定的传递设备名称。

SubscriberLocale

nvarchar(10)

通知的订阅方的区域设置。

通知类字段 (1-n)

application-defined

通知类中指定的所有列也显示在此视图中。

LinkNotificationId

bigint

使用摘要传递时在摘要中包含的第一个通知的 ID。摘要中的所有后续通知均包含此 ID。NULL 指示通知不是摘要中的后续通知。

备注

NSNotificationClassNameNotificationDistribution 视图位于应用程序数据库中。

通过应用程序定义中的分发服务器日志记录设置,按应用程序对视图中可用的数据量进行控制。这些应用程序执行设置控制着向分发日志中写入的内容,从而控制着对此视图可用的内容。有关详细信息,请参阅配置分发服务器日志记录

单个通知可以在 NSNotificationClassNameNotificationDistribution 视图中有多行,每个传递尝试一行。例如,如果通知传递尝试失败了两次之后才成功,则通知将在此视图中占三行,直到清空进程删除数据。

使用 DeliveryStatusDescription 列确定通知传递状态。下表包含状态代码的说明。

DeliveryStatusDescription 值 说明

从未尝试进行传递: 首次尝试被挂起

分发服务器尚未尝试传递通知。导致此结果的原因可能包括:应用程序设置、要分发的通知的积压、分发问题(如分发服务器被禁用)或故障太多(受 FailuresBeforeAbort 设置控制)。

传递成功

传递协议返回一个指示成功传递的值。

传递失败

发生以下事件之一:

  • 在内容格式设置步骤中失败。
  • 调用传递协议时出错。
  • 传递协议报告了传递失败。

若要排除传递失败的故障,请在 Microsoft Windows 事件查看器中的应用程序日志中查找错误消息。请注意,对于一个传递失败,可能会记录多个错误;请查看每个 Notification Services 错误消息的说明。

权限

sysadmindb_owner 服务器角色的成员,以及 Notification Services 的 NSAnalysis 角色可使用此视图。

示例

对 Stock 示例运行以下查询,确定是否所有通知传递尝试均已失败:

USE StockInstanceStock;
SELECT NotificationId, DeliveryStatusInfo 
FROM NSStockNotificationsNotificationDistribution
WHERE DeliveryStatusDescription = N'Delivery failed';

上述查询返回尚未通过清空进程删除的所有失败通知。如果一个通知进行了多次失败的传递尝试,则查询为每次失败均返回一行。

若要从 Stock 示例返回已失败一次或多次的通知的列表,请运行以下查询:

USE StockInstanceStock;
SELECT DISTINCT(NotificationId) 
FROM NSStockNotificationsNotificationDistribution
WHERE DeliveryStatusDescription = N'Delivery failed';

请参阅

参考

Notification Services 视图

其他资源

配置分发服务器日志记录

帮助和信息

获取 SQL Server 2005 帮助