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) 或格林威治標準時間 (GMT) 表示。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 事件類別的事件類別診斷報表。在這個範例中,依照 ICF 的 SchemaName 元素所指定,預存程序 (如同所有其他執行個體物件) 是在 FlightInstance 結構描述中。
這份報表會使用預設值,以指定顯示最後五個產生器配量的資料。
EXEC FlightInstance.NSDiagnosticEventClass
@ApplicationName = N'Flight',
@EventClassName = N'FlightEvents';
請參閱
參考
Notification Services 預存程序 (Transact-SQL)
其他資源
Notification Services 效能報告
SchemaName Element (ICF)