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)

帮助和信息

获取 SQL Server 2005 帮助