NSPrepareRuleFiring (Transact-SQL)
アプリケーション データベースでルール実行のための準備を行います。この準備を行うことにより、クォンタムがスケジュール設定され、イベント ビューと定期的なサブスクリプション ビューがクォンタムに対して適切に具体化されます。また、使用可能なイベントやサブスクリプションに基づいて、クォンタムのルール実行がスケジュール設定されます。
このストアド プロシージャが完了すると、アプリケーション データベースの状態は、通常のジェネレータ操作における、ルール実行前の状態と同じになります。
構文
[ application_schema_name . ] NSPrepareRuleFiring
[ [ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag ]
[, [ @DisableQuantumLimits = ] quantum_limits_flag ]
引数
[ @ReportPossibleEventChronicleUsage =] chronical_usage_flag
ルール実行の影響を受ける、またはルール実行で使用されているイベント記録の一覧を返すかどうかを指定します。0 以外の値を指定すると、結果セットでは準備したルール実行に関連付けられているイベント記録の一覧が返されます。chronical_usage_flag のデータ型は tinyint で、既定値は 1 です。
[ @DisableQuantumLimits =] quantum_limits_flag
新しいクォンタムのスケジュール設定で、アプリケーション定義ファイル (ADF) にあるアプリケーションの実行設定を基にした、ChronicleQuantumLimit の値と SubscriptionQuantumLimit の値を使用するかどうかを指定します。値が 0 以外である場合は、ストアド プロシージャではこれらの設定が無視されます。この場合、クォンタムがスキップされることはありません。quantum_limits_flag のデータ型は tinyint で、既定値は 1 です。
結果セット
NSPrepareRuleFiring を実行すると、1 つまたは 2 つの結果セットが作成されます。1 番目の結果セットには、ルールに関する情報が含まれます。
列名 | データ型 | 説明 |
---|---|---|
QuantumId |
int |
ルール実行のクォンタムの ID 番号。 |
QuantumStartTime |
datetime |
ルールを含むクォンタムの開始日時。UTC (協定世界時またはグリニッジ標準時) で表されます。 |
QuantumEndTime |
datetime |
ルールを含むクォンタムの終了日時 (UTC)。 |
RuleName |
nvarchar(255) |
アプリケーション定義ファイル (ADF) でルールに対して付けられている名前。実行できる状態のルールが存在しない場合、この値は NULL となります。 |
EventClassName |
nvarchar(255) |
イベント ベースのルールの場合の、対応するイベント クラスの名前。定期的なサブスクリプション ルールの場合や、実行できる状態のルールが存在しない場合、この値は NULL になります。 |
SubscriptionClassName |
nvarchar(255) |
対応するサブスクリプション クラスの名前。イベント記録ルールの場合や、実行できる状態のルールが存在しない場合、この値は NULL になります。 |
RuleFiringId |
int |
準備されたルール実行を識別する ID 番号。実行できる状態のルールが存在しない場合、この列には NULL が格納されます。 |
EventBatchId |
bigint |
対応するイベント バッチを表す ID 番号。ルールがイベント記録ルールまたはイベント サブスクリプション ルールではない場合や、アプリケーションでイベントを順番に処理するように設定されていない場合、または実行できる状態のルールが存在しない場合、この値は NULL になります。 |
StartScanTime |
datetime |
準備された定期的なサブスクリプション ルールの開始日時 (UTC)。開始日時は QuantumStartTime と QuantumEndTime の範囲内となります。 ルールがイベント記録ルールまたはイベント サブスクリプション ルールではない場合や、アプリケーションでイベントを順番に処理するように設定されていない場合、または実行できる状態のルールが存在しない場合、この値は NULL になります。 |
EndScanTime |
datetime |
準備された定期的なサブスクリプション ルールの終了日時 (UTC)。終了日時は QuantumStartTime と QuantumEndTime の範囲内となります。 ルールがイベント記録ルールまたはイベント サブスクリプション ルールではない場合や、アプリケーションでイベントを順番に処理するように設定されていない場合、または実行できる状態のルールが存在しない場合、この値は NULL になります。 |
RemainingQuantumRuleFirings |
int |
このクォンタムに残っている、完了させる必要のあるルール実行の数。この数には、すべての準備されたルール実行、つまり、実行されていないルール実行が含まれます。準備対象のルールが存在しない場合、この値は 0 になります。 |
2 番目の結果セットは、記録処理が何らかの影響を受ける可能性がある場合にのみ作成されます。この結果セットは、PossibleChronicleReferenceByRule の値で並べ替えられます。
列名 | データ型 | 説明 |
---|---|---|
PossibleChronicleReferenceByRule |
nvarchar(255) |
準備されたルール実行に関連付けられているイベント記録の名前。 |
解説
Notification Services でインスタンスを作成すると、アプリケーション データベース内に NSPrepareRuleFiring ストアド プロシージャが作成されます。アプリケーションを更新すると、Notification Services ではストアド プロシージャが再コンパイルされます。
このストアド プロシージャは、アプリケーション定義ファイル (ADF) の要素 SchemaName で指定される、アプリケーション スキーマ内に格納されます。スキーマ名が指定されない場合、既定のスキーマ dbo が使用されます。
このストアド プロシージャは、ジェネレータの状態が無効か無効保留の場合にのみ実行できます。
このストアド プロシージャは、NSExecuteRuleFiring を呼び出さずに繰り返し実行できますが、この場合、アプリケーション データベース内のルール実行状態は変更されません。アプリケーション データベースの状態を、準備されたルール実行より後の状態に移行するには、NSExecuteRuleFiring ストアド プロシージャを使用するか、インスタンスを起動します。
権限
既定では、NSGenerator データベース ロール、NSRunService データベース ロール、db_owner 固定データベース ロール、および sysadmin 固定サーバー ロールのメンバに実行権限が与えられています。
戻り値
0 (成功) または 1 (失敗)
例
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 要素 (ADF)