NSDiagnosticSubscriptionClass (Transact-SQL)
產生 Microsoft SQL Server Notification Services 應用程式的訂閱類別診斷報表。這份報表會提供規則引發時間及基於訂閱類別的通知傳遞等資訊,供您進行訂閱類別處理程序的疑難排解。
語法
[ schema_name . ] NSDiagnosticSubscriptionClass
[ @ApplicationName = ] 'app_name' ,
[ @SubscriptionClassName = ] 'subscription_class_name'
[, [ @ReportingInterval = ] interval ]
[, [ @StartDateTime = ] 'start_date_time' ]
[, [ @EndDateTime = ] 'end_date_time' ]
引數
[ @ApplicationName = ] 'app_name'
這是符合組態檔所定義的應用程式名稱。app_name 是 nvarchar(255),沒有預設值。
[ @SubscriptionClassName = ] 'subscription_class_name'
這是符合應用程式定義檔案 (ADF) 所定義的訂閱類別名稱。subscription_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 為單位)。 |
SubscriptionsScheduledCount |
int |
報告間隔期間所處理之已排程的訂閱數目。 |
AvgScheduledSubscriptionWaitTime |
float |
對於排程在間隔期間處理的訂閱,在排程的訂閱時間和產生器實際處理訂閱的時間之間的平均延遲時間。 |
AvgScheduledNotificationGenerationTime |
float |
對於排程在間隔期間處理的訂閱,產生器從已排程的訂閱中建立原始通知資料所花的平均時間。 |
AvgScheduledSubscriptionRuleFiringTime |
float |
對於排程在間隔期間處理的訂閱,執行排程的訂閱規則所花的平均時間。 |
ScheduledNotificationBatchCount |
int |
對於排程在間隔期間處理的訂閱,所建立的通知批次數目。 |
ScheduledNotificationCount |
int |
對於排程在間隔期間處理的訂閱,所建立的通知數目。 |
AvgScheduledNotificationBatchWaitTillDistribution |
float |
在報告間隔期間從已排程的訂閱中產生通知批次,到散發者將它取出進行散發,所等待的平均時間。 |
ScheduledNotificationDeliveryAttempts |
int |
對於排程在間隔期間處理的訂閱,嘗試傳遞通知的次數。 |
ScheduledNotificationSuccessfulDeliveries |
int |
對於排程在間隔期間處理的訂閱,傳遞通知成功的數目。 |
ScheduledNotificationFailedAttempts |
int |
對於排程在間隔期間處理的訂閱,傳遞通知失敗的次數。 |
ScheduledNotificationsDeliveryNotAttempted |
int |
對於排程在間隔期間處理的訂閱,尚未嘗試傳遞的通知數目。 |
ScheduledNotificationsNotYetDelivered |
int |
對於排程在間隔期間處理的訂閱,因尚未嘗試傳遞,或嘗試傳遞失敗,而尚未傳遞的通知數目。 |
ScheduledNotificationToMessageRatio |
float |
對於排程在間隔期間處理的訂閱,產生的通知與傳送之訊息的比例。 |
AvgScheduledNotificationBatchSucceedDeliveryTime |
float |
如果是摘要或多重傳遞,單一訊息可以包括多項通知。這個資料行指出摘要或多重播送訊息所包含的平均通知數。 |
備註
當您建立執行個體時,Notification Services 會在執行個體資料庫中,建立 NSDiagnosticSubscriptionClass 預存程序。當您更新執行個體時,Notification Services 會重新編譯預存程序。
這個預存程序在執行個體組態檔 (ICF) 的 SchemaName 元素所指定的執行個體結構描述中。如果未提供結構描述名稱,預設結構描述便是 dbo。
當排程之規則的引發時間大於 IntervalStartDateTime,且小於或等於 IntervalEndDateTime 時,已排程的訂閱便在報告間隔內。
若要判斷目前的 UTC 日期和時間,請在 SQL Server Management Studio 中,執行 SELECT GETUTCDATE()。目前 UTC 時間是從目前本機時間和執行 SQL Server 之電腦的作業系統時區設定衍生而來。
權限
執行權限預設會授與 NSAnalysis 和 db_owner 資料庫角色以及系統管理員 (sysadmin) 固定伺服器角色的成員。
範例
A. 指定報告間隔、開始時間和結束時間值
下列範例會產生 Flight 應用程式和 FlightSubscriptions 訂閱類別的訂閱類別診斷報表。執行個體使用預設資料庫設定,將所有執行個體物件放在 dbo 結構描述中。
這份報表每個報告間隔包含 50 個產生器配量。報表從 2004 年 5 月 23 日下午 5:00 開始,同一天的下午 6:00 結束:
EXEC dbo.NSDiagnosticSubscriptionClass
@ApplicationName = N'Flight',
@SubscriptionClassName = N'FlightSubscriptions',
@ReportingInterval = 50,
@StartDateTime = '2004-05-23 17:00',
@EndDateTime = '2004-05-23 18:00';
B. 使用預設值,具名結構描述
下列範例會產生 Flight 應用程式和 FlightSubscriptions 訂閱類別的訂閱類別診斷報表。在這個範例中,依照 ICF 的 SchemaName 元素所指定,預存程序 (如同所有其他執行個體物件) 是在 FlightInstance 結構描述中。
這份報表使用預設值,指定顯示前五個配量的訂閱類別資料。
EXEC FlightInstance.NSDiagnosticSubscriptionClass
@ApplicationName = N'Flight',
@SubscriptionClassName = N'FlightSubscriptions';
請參閱
參考
Notification Services 預存程序 (Transact-SQL)
其他資源
Notification Services 效能報告
SchemaName Element (ICF)