NSDiagnosticEventClass (Transact-SQL)

生成 Microsoft SQL Server Notification Services 应用程序的事件类报告。此报告有助于解决有关事件集合的问题,并可提供有关按应用程序处理事件的信息。

语法

[ schema_name . ] NSDiagnosticEventClass 
    [ @ApplicationName = ] 'app_name' ,
    [ @EventClassName = ] 'event_class_name' 
    [, [ @ReportingInterval = ] interval ] 
    [, [ @StartDateTime = ] 'start_date_time' ] 
    [, [ @EndDateTime = ] 'end_date_time' ] 

参数

[ @ApplicationName = ] 'app_name'

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

[ @EventClassName = ] 'event_class_name'

应用程序内事件类的名称。event_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。默认值是您调用存储过程的时间(使用 UTC 表示)。

返回代码值

0(成功)或 1(失败)

结果集

列名 数据类型 说明

IntervalStartDateTime

datetime

报告间隔的开始日期和时间,使用 UTC 表示。

IntervalEndDateTime

datetime

报告间隔的结束日期和时间,使用 UTC 表示。

EventBatchesCollectedCount

int

在报告间隔内收集的事件批数。只计算在间隔期间完成收集进程的批处理。

UnfinishedEventBatches

int

在报告间隔期间已开始但尚未完成的事件批数。

AvgEventBatchEventCount

float

对于在报告间隔期间收集的事件批次,表示每批的平均事件数。

AvgEventsCollectedPerSecond

float

对于报告间隔期间收集的事件批次,表示每秒平均收集的事件数。

AvgGeneratorPickupWaitPerBatch

float

对于报告间隔期间收集的事件批次,表示生成器处理事件批次(通过对其执行事件历史记录或事件订阅规则)的平均使用时间(秒)。

AvgEventChronicleRuleFiringTimePerBatch

float

对于在报告间隔期间收集的事件批次,表示运行事件历史记录规则的平均时间(秒)。

AvgEventSubscriptionRuleFiringTimePerBatch

float

对于在报告间隔期间收集的事件批次,表示运行事件订阅规则的平均时间(秒)。

EventNotificationBatchCount

int

从报告间隔期间收集的事件批次中生成的通知批数。

EventNotificationsGeneratedCount

int

从报告间隔期间收集的事件批次中生成的通知数。

AvgEventNotificationBatchGenerationTime

float

对于在报告间隔期间收集的事件批次,表示生成器创建通知批次的平均时间(秒)。

AvgEventNotificationBatchWaitTillDistribution

float

对于在报告间隔期间收集的事件批次,表示通知批次等待分发服务器对其进行处理的平均时间(秒)。

EventNotificationDeliveryAttempts

int

尝试传递通知的次数,这些通知是从报告间隔期间所收集的事件中创建的。

EventNotificationSuccessfulDeliveries

int

对于报告间隔期间收集的事件批次,表示成功的通知传递次数。

EventNotificationFailedAttempts

int

对于在报告间隔期间收集的事件批次,表示未送达通知传递尝试的次数。

EventNotificationsDeliveryNotAttempted

int

对于报告间隔过程中收集的事件批次,表示分发服务器尚未尝试传递的通知数。

EventNotificationsNotYetDelivered

int

对于在报告间隔期间收集的事件批次,表示由于未尝试传递或尝试时失败而尚未传递的通知数。

EventNotificationToMessageRatio

float

对于在报告间隔期间收集的事件批次,表示生成的通知与已发送消息的比率。

对于摘要传递或多播传递,一条消息可以包括多个通知。此列指示摘要消息或多播消息中平均包括多少条通知。

AvgEventNotificationBatchSucceedDeliveryTime

float

对于由间隔的事件批次生成的通知,表示通过传递进程成功发送通知的平均时间。

备注

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

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

EndCollectionTime 值大于 IntervalStartDateTime 值并小于或等于 IntervalEndDateTime 值时,事件批次便处于报告间隔内。

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

权限

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

示例

A. 指定报告间隔、开始时间和结束时间

以下示例为 Flight 应用程序和 FlightEvents 事件类生成事件类诊断报告。该实例使用默认的数据库设置,这会将所有实例对象置于 dbo 架构中。

该报告在每个报告间隔中包括 40 个生成器量程。该报告的开始时间为 2004 年 5 月 23 日的下午 5:00 点,结束时间为当天下午 6:00 点(以 UTC 表示):

EXEC dbo.NSDiagnosticEventClass 
    @ApplicationName = N'Flight', 
    @EventClassName = N'FlightEvents', 
    @ReportingInterval = 40, 
    @StartDateTime = '2004-05-23 17:00', 
    @EndDateTime = '2004-05-23 18:00';

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

以下示例为 Flight 应用程序和 FlightEvents 事件类生成事件类诊断报告。在此示例中,存储过程(类似于所有其他实例对象)位于 FlightInstance 架构中,正如 ICF 的 SchemaName 元素中指定的一样。

该报告使用默认值,指定显示过去五个生成器量程的数据。

EXEC FlightInstance.NSDiagnosticEventClass
    @ApplicationName = N'Flight',
    @EventClassName = N'FlightEvents';

请参阅

参考

Notification Services 存储过程 (Transact-SQL)

其他资源

Notification Services 性能报告
SchemaName Element (ICF)

帮助和信息

获取 SQL Server 2005 帮助