NSDiagnosticNotificationClass (Transact-SQL)
为 Microsoft SQL Server Notification Services 应用程序生成通知类报表。此报表提供了有关通知类所处理的通知数和通知批数,以及通知是否传递成功的信息。
语法
[ schema_name . ] NSDiagnosticNotificationClass
[ @ApplicationName = ] 'app_name' ,
[ @NotificationClassName = ] 'notification_class_name'
[, [ @ReportingInterval = ] interval ]
[, [ @StartDateTime = ] 'start_date_time' ]
[, [ @EndDateTime = ] 'end_date_time' ]
参数
[ @ApplicationName=] 'app_name'
应用程序的名称,与配置文件中定义的相同。app_name 的数据类型为 nvarchar(255),无默认值。
[ @NotificationClassName=] 'notification_class_name'
通知类的名称,在应用程序定义文件 (ADF) 中定义。notification_class_name 的数据类型为 nvarchar(255),无默认值。
[ @ReportingInterval=] interval
在每个报告间隔中的生成器量程数。对于每个时间间隔,该报表均包含一行。interval 的数据类型为 int,默认值为 1,指示每个时间间隔有一个生成器量程。
量程持续时间是在应用程序定义文件 (ADF) 中定义的。
[ @StartDateTime=] 'start_date_time'
报告的开始日期和时间,使用 UTC(通用协调时间或格林尼治标准时间)表示。start_date_time 的数据类型为 datetime。默认值为 @EndDateTime 值前面的 (5 * QuantumDuration * @ReportingInterval)。使用默认值,结果集最多包含五行,每行表示一个报告间隔。
[ @EndDateTime=] 'end_date_time'
报告的结束日期和时间,使用 UTC 表示。end_date_time 的数据类型为 datetime。默认值为 GETUTCDATE 函数的结果,此函数返回调用存储过程的时间。
返回代码值
0(成功)或 1(失败)
结果集
列名 | 数据类型 | 说明 |
---|---|---|
IntervalStartDateTime |
datetime |
报告间隔的开始日期和时间,使用 UTC 表示。 |
IntervalEndDateTime |
datetime |
报告间隔的结束日期和时间,使用 UTC 表示。 |
NotificationBatchesGenerated |
int |
对于通知类,表示在报告间隔期间生成的通知批数。 |
NotificationsGenerated |
int |
对于通知类,表示在报告间隔期间生成的通知数。 |
NotificationsGeneratedPerSecond |
float |
对于通知类,表示在报告间隔期间每秒生成的通知数。 |
AvgNotificationBatchWaitTillDistribution |
float |
对于通知类,表示分发服务器在报告间隔期间拾取通知批次前的平均等待时间。 |
NotificationDeliveryAttempts |
int |
对于在报告间隔期间生成的给定通知类的通知批次,表示尝试传递的通知数。 |
NotificationSuccessfulDeliveries |
int |
对于在报告间隔期间生成的给定通知类的通知批次,表示成功传递的通知数。 |
NotificationFailedAttempts |
int |
对于在报告间隔期间生成的给定通知类的通知批次,表示尝试传递失败的通知数。 |
NotificationsDeliveryNotAttempted |
int |
对于在报告间隔期间生成的给定通知类的通知批次,表示分发服务器尚未尝试传递的通知数。 |
NotificationsNotYetDelivered |
int |
对于在报告间隔期间生成的给定通知类的通知批次,表示由于未尝试传递或尝试失败而尚未传递的通知数。 |
NotificationToMessageRatio |
float |
对于在报告间隔期间生成的通知批次,表示为已发送的消息生成的通知的比率。 对于摘要传递或多播传递,一条消息可以包括多个通知。此列指示摘要消息或多播消息中平均包括多少条通知。 |
AvgNotificationBatchSucceedDeliveryTime |
float |
对于在报告间隔期间生成的通知批次,表示通过分发进程成功发送通知的平均时间。 |
备注
创建实例时,Notification Services 将在实例数据库中创建 NSDiagnosticNotificationClass 存储过程。在更新实例时,Notification Services 会重新编译该存储过程。
此存储过程位于实例架构中,该实例架构由实例配置文件 (ICF) 的 SchemaName 元素指定。如果没有提供架构名称,默认架构为 dbo。
当 EndGenerationTime 值大于 IntervalStartDateTime 且小于或等于 IntervalEndDateTime 时,通知批次便处于报告间隔内。
若要确定当前 UTC 日期和时间,请在 SQL Server Management Studio 中运行 SELECT GETUTCDATE()。当前的 UTC 时间基于运行 SQL Server 的计算机操作系统中的当前本地时间和时区设置进行派生。
权限
执行权限默认授予 NSAnalysis 数据库角色、db_owner 固定数据库角色和 sysadmin 固定服务器角色的成员。
示例
A. 指定报告间隔、开始时间和结束时间值
下面的示例为 Flight 应用程序和 FlightNotifications 通知类生成通知类诊断报告。该实例使用默认的数据库设置,这会将所有实例对象置于 dbo 架构中。
该报表在每个报告间隔中包括 60 个生成器量程。该报表在 2002 年 5 月 23 日下午 5:00 开始,在同一天下午 6:00 结束:
EXEC dbo.NSDiagnosticNotificationClass
@ApplicationName = N'Flight',
@NotificationClassName = N'FlightNotifications',
@ReportingInterval = 60,
@StartDateTime = '2004-05-23 17:00',
@EndDateTime = '2004-05-23 18:00';
B. 使用默认值和命名架构
下面的示例为 Flight 应用程序和 FlightNotifications 通知类生成通知类诊断报告。如 ICF 的 SchemaName 元素中所指定的,示例中,存储过程(类似于所有其他实例对象)位于 FlightInstance 架构中。
该报表使用默认值,指定显示过去五个生成器量程的数据。
EXEC FlightInstance.NSDiagnosticNotificationClass
@ApplicationName = N'Flight',
@NotificationClassName = N'FlightNotifications';
请参阅
参考
Notification Services 存储过程 (Transact-SQL)
其他资源
Notification Services 性能报告
SchemaName Element (ICF)