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)