NSDiagnosticFailedNotifications (Transact-SQL)

为 Microsoft SQL Server Notification Services 应用程序生成未送达通知的报表。此报表列出未送达通知的传递尝试。报表的每行都包括生成通知的通知类和订阅类、本来应将通知发送到的订阅方以及有关传递尝试的信息。此报表可用来排除通知传递的故障。

语法

[ schema_name . ] NSDiagnosticFailedNotifications 
    [ @ApplicationName = ] 'app_name' ,
    [, [@StartDateTime = ] 'start_date_time' ] 
    [, [@EndDateTime = ] 'end_date_time' ] 

参数

[ @ApplicationName = ] 'app_name'

应用程序的名称,与配置文件中定义的相同。app_name 的数据类型为 nvarchar(255),无默认值。

[ @StartDateTime = ] 'start_date_time'

报告的开始日期和时间,使用 UTC(通用协调时间或格林尼治标准时间)表示。start_date_time 的数据类型为 datetime。默认值为系统启动日期和时间。

[ @EndDateTime = ] 'end_date_time'

报告的结束日期和时间,使用 UTC 表示。end_date_time 的数据类型为 datetime。默认值是您调用存储过程的时间(使用 UTC 表示)。

返回代码值

结果集

列名 数据类型 说明

ApplicationName

nvarchar(255)

作为未送达通知来源的应用程序的名称。

NotificationClassName

nvarchar(255)

生成通知的通知类的名称。

DeliveryChannelName

nvarchar(255)

尝试传递通知的传递通道的名称。

如果结果为 NULL,则订阅不与有效的订阅方设备关联,因此无法分配给传递通道。

NotificationBatchId

bigint

包含未送达通知的通知批次的 ID。

NotificationId

bigint

未送达通知的 ID。

SubscriberId

nvarchar(255)

本应接收通知的订阅方的 ID 号。

SubscriberDeviceAddress

nvarchar(255)

本应接收通知的设备地址,例如电子邮件地址。

DeliveryRequestTime

datetime

分发服务器请求传递协议传递通知的日期和时间。

SentTime

datetime

传递协议报告通知传递失败的日期和时间。

NextRetryTime

datetime

分发服务器将尝试传递消息的下一个日期和时间。

备注

创建实例时,Notification Services 将在实例数据库中创建 NSDiagnosticFailedNotifications 存储过程。在更新实例时,Notification Services 会重新编译该存储过程。

此存储过程位于实例架构中,该实例架构由实例配置文件 (ICF) 的 SchemaName 元素指定。如果没有提供架构名称,默认架构为 dbo

输出依次按照 ApplicationNameNotificationClassNameDeliveryChannelNameSubscriberId 排序。

由于单个订阅可生成多个通知,而多个订阅可用于单个通知(具体取决于应用程序逻辑),因此该报表未将通知与各订阅方关联。

如果传递服务支持错误日志记录,则可将特定通知的未送达情况记录到数据库中。您可以使用 NSNotificationClassNameNotificationDistribution 视图查看此数据。

若要确定当前 UTC 日期和时间,请在 SQL Server Management Studio 中运行 SELECT GETUTCDATE()。当前的 UTC 时间派生自运行 SQL Server 的计算机操作系统中的当前本地时间和时区设置。

权限

执行权限默认授予 NSAnalysis 数据库角色、db_owner 固定数据库角色和 sysadmin 固定服务器角色的成员。

示例

A. 指定起始时间和结束时间值

下面的示例为 Flight 应用程序生成未送达通知的报告。该实例使用默认的数据库设置,这会将所有实例对象置于 dbo 架构中。

此报表包括 2004 年 5 月 23 日下午 5:00 到 6:00 之间未送达的所有通知的信息。

EXEC dbo.NSDiagnosticFailedNotifications 
    @ApplicationName = N'Flight', 
    @StartDateTime = '2004-05-23 17:00', 
    @EndDateTime = '2004-05-23 18:00';

B. 使用默认值和命名架构

下面的示例为 Flight 应用程序生成未送达通知的报告。在此示例中,存储过程(类似于所有其他实例对象)位于 FlightInstance 架构中,正如 ICF 的 SchemaName 元素中指定的一样。

此报表使用默认值,这些值指定应显示应用程序启动后的所有数据。

EXEC FlightInstance.NSDiagnosticFailedNotifications 
    @ApplicationName = N'Flight';

请参阅

参考

Notification Services 存储过程 (Transact-SQL)

其他资源

Notification Services 性能报告
SchemaName Element (ICF)

帮助和信息

获取 SQL Server 2005 帮助