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。
输出依次按照 ApplicationName、NotificationClassName、DeliveryChannelName 和 SubscriberId 排序。
由于单个订阅可生成多个通知,而多个订阅可用于单个通知(具体取决于应用程序逻辑),因此该报表未将通知与各订阅方关联。
如果传递服务支持错误日志记录,则可将特定通知的未送达情况记录到数据库中。您可以使用 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)