NSPrepareRuleFiring (Transact-SQL)
準備規則引發的應用程式資料庫。這項準備可確保已排程配量的排程,已針對配量來適當具體化事件檢視和排程的訂閱檢視,且已根據一組可用的事件和訂閱來排程配量的規則引發。
預存程序完成之後,應用程式資料庫的狀態相當於在正常產生器作業期間,在執行規則之前已經存在的狀態。
語法
[ application_schema_name . ] NSPrepareRuleFiring
[ [ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag ]
[, [ @DisableQuantumLimits = ] quantum_limits_flag ]
引數
[ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag
指出備妥的規則引發程序是否傳回規則引發所影響或使用的可能事件紀事輯清單。非零值會使常式傳回結果集來列出備妥的規則引發所關聯的一組事件紀事輯。chronical_usage_flag 是 tinyint,預設值是 1。
[ @DisableQuantumLimits = ] quantum_limits_flag
指出新配量的排程是否使用應用程式定義檔案 (ADF) 之應用程式執行設定中的 ChronicleQuantumLimit 值和 SubscriptionQuantumLimit 值。非零值指出這個預存程序不應利用這些設定來略過一或多個配量期間。quantum_limits_flag 是 tinyint,預設值是 1。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
NSPrepareRuleFiring 會產生一或兩個結果集。第一個結果集包含規則的相關資訊。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
QuantumId |
int |
規則引發的配量識別碼。 |
QuantumStartTime |
datetime |
規則所在配量的開始日期和時間,以國際標準時間 (UTC) 或格林威治標準時間 (GMT) 表示。 |
QuantumEndTime |
datetime |
規則所在配量的結束日期和時間 (以 UTC 為單位)。 |
RuleName |
nvarchar(255) |
應用程式定義檔案 (ADF) 中指派給規則的名稱。如果沒有準備執行的規則,這個值就是 NULL。 |
EventClassName |
nvarchar(255) |
事件觸發規則的相關事件類別名稱。如果規則是已排程訂閱規則,或沒有準備執行的規則,這個值就是 NULL。 |
SubscriptionClassName |
nvarchar(255) |
相關訂閱類別的名稱。如果規則是事件紀事輯規則,或沒有準備執行的規則,這個值就是 NULL。 |
RuleFiringId |
int |
用來識別備妥的規則引發之識別碼。如果沒有已準備執行的規則引發,這個資料行就是 NULL。 |
EventBatchId |
bigint |
用來識別相關事件批次的識別碼。如果規則不是事件紀事輯或事件訂閱規則、應用程式並未循序處理事件,或沒有準備執行的規則,這個值就是 NULL。 |
StartScanTime |
datetime |
備妥的已排程訂閱規則的開始日期和時間 (以 UTC 為單位)。開始日期和時間必須在 QuantumStartTime 和 QuantumEndTime 之間。 如果規則不是事件紀事輯或事件訂閱規則、應用程式並未循序處理事件,或沒有準備執行的規則,這個值就是 NULL。 |
EndScanTime |
datetime |
備妥的已排程訂閱規則的結束日期和時間 (以 UTC 為單位)。結束日期和時間必須在 QuantumStartTime 和 QuantumEndTime 之間。 如果規則不是事件紀事輯或事件訂閱規則、應用程式並未循序處理事件,或沒有準備執行的規則,這個值就是 NULL。 |
RemainingQuantumRuleFirings |
int |
用來完成配量之規則引發的其餘規則引發數目。這個數目包括任何已備妥的規則引發,因為它們尚未執行。如果沒有要準備的規則,這個值就是 0。 |
只有在可能影響紀事輯時,才會出現第二個結果集。結果集是依照 PossibleChronicleReferenceByRule 來排序。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
PossibleChronicleReferenceByRule |
nvarchar(255) |
已備妥之規則引發的相關事件紀事輯名稱。 |
備註
當您建立執行個體時,Notification Services 會在應用程式資料庫中,建立 NSPrepareRuleFiring 預存程序。當您更新應用程式時,Notification Services 會重新編譯預存程序。
這個預存程序在應用程式定義檔案 (ADF) 的 SchemaName 元素所指定的應用程式結構描述中。如果未提供結構描述名稱,預設結構描述便是 dbo。
產生器必須在已停用或停用暫止狀態中,才能執行這個預存程序。
您不需要呼叫 NSExecuteRuleFiring,便可以重複呼叫這個預存程序,不過,應用程式資料庫中的狀態不會改變。在備妥的規則引發之外移動應用程式資料庫狀態的唯一方式,是使用 NSExecuteRuleFiring 預存程序或啟動執行個體。
權限
執行權限預設會授與 NSGenerator 和 NSRunService 資料庫角色、db_owner 固定資料庫角色以及系統管理員 (sysadmin) 固定伺服器角色的成員。
範例
A. 報告紀事輯使用情況和使用配量限制
下列範例會顯示如何準備資料庫,以便從配量 1 執行排程的規則,報告事件紀事輯可能會有的使用情況。規則引發不會忽略 ADF 所指定的配量限制。
應用程式使用預設的 SchemaName 設定,這項設定會將所有應用程式物件放在 dbo 結構描述中。
EXEC dbo.NSSetQuantumClock
@QuantumId = 1;
EXEC dbo.NSPrepareRuleFiring
@ReportPossibleEventChronicleUsage = 1,
@DisableQuantumLimits = 0;
B. 使用預設值
下列範例會顯示如何準備資料庫,以便利用預存程序預設值,從配量 100 執行排程的規則。預存程序不會報告事件紀事輯的使用情況,且會忽略配量限制。
在這個範例中,依照 ADF 的 SchemaName 元素所指定,預存程序 (如同所有其他應用程式物件) 是在 Stock 結構描述中。
EXEC dbo.NSSetQuantumClock
@QuantumId = 100;
EXEC Stock.NSPrepareRuleFiring;
請參閱
參考
NSExecuteRuleFiring (Transact-SQL)
NSSetQuantumClock (Transact-SQL)
NSSetQuantumClockDate (Transact-SQL)
Notification Services 預存程序 (Transact-SQL)
NSExecuteRuleFiring (Transact-SQL)
其他資源
Notification Services 效能報告
SchemaName Element (ADF)