NSExecuteRuleFiring (Transact-SQL)

Microsoft SQL Server Notification Services のルールを準備し実行します。このストアド プロシージャを使用すると、ジェネレータを手動で実行しながら、通知を生成して状態を管理するルールを実行できます。

このストアド プロシージャではルールが正常に実行されたかどうかに関係なく、適切なイベントと定期的なサブスクリプション ビューを具体化することにより、次のルール実行の準備を行います。これにより、ルール実行の動作をデバッグできます。

構文

[ application_schema_name . ] NSExecuteRuleFiring 
    [ [ @ReportExecutionResults = ] report_flag ]
    [, [ @DisableQuantumLimits = ] limit_flag ]

引数

[@ReportExecutionResults =] report_flag

ストアド プロシージャでルールの実行に関するレポート情報を出力するかどうかを指定します。0 以外の値を指定すると、ルールの実行に関する情報が返されます。report_flag のデータ型は tinyint で、既定値は 1 です。

[@DisableQuantumLimits =] limit_flag

アプリケーションに定義されている記録クォンタムの制限とサブスクリプション クォンタムの制限に従うかどうかを指定します。0 以外の値を指定すると、クォンタムのスケジュール設定ではクォンタムの制限が無視されます。limit_flag のデータ型は tinyint で、既定値は 1 です。

結果セット

NSExecuteRuleFiring を実行すると、最大で 3 つの結果セットが生成されます。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)。開始日時は QuantumStartTimeQuantumEndTime の範囲内となります。

ルールがイベント記録ルールまたはイベント サブスクリプション ルールではない場合や、アプリケーションでイベントを順番に処理するように設定されていない場合、または実行できる状態のルールが存在しない場合、この値は NULL になります。

EndScanTime

datetime

準備された定期的なサブスクリプション ルールの終了日時 (UTC)。終了日時は QuantumStartTimeQuantumEndTime の範囲内となります。

ルールがイベント記録ルールまたはイベント サブスクリプション ルールではない場合や、アプリケーションでイベントを順番に処理するように設定されていない場合、または実行できる状態のルールが存在しない場合、この値は NULL になります。

RemainingQuantumRuleFirings

int

このクォンタムに残っている、完了させる必要のあるルール実行の数。この数には、すべての準備されたルール実行、つまり、実行されていないルール実行が含まれます。準備対象のルールが存在しない場合、この値は 0 になります。

2 番目の結果セットは、記録処理が何らかの影響を受ける可能性がある場合にのみ作成されます。この結果セットは、PossibleChronicleReferenceByRule の値で並べ替えられます。

列名 データ型 説明

PossibleChronicleReferenceByRule

nvarchar(255)

準備されたルール実行に関連付けられているイベント記録の名前。

3 番目の結果セットは、このストアド プロシージャで通知が作成された場合にのみ作成されます。この結果セットには、作成された通知に関する情報が含まれます。通知の情報は、NotificationClassName の値でグループ化されます。

列名 データ型 説明

NotificationClassName

nvarchar(255)

通知を生成した通知クラスの名前。

NotificationBatchId

bigint

生成した通知を含んでいる通知バッチの ID。

NotificationCount

bigint

ルールの実行の結果生成された通知の数。

StartGenerationTime

datetime

通知バッチの生成を開始した日時 (UTC)。

EndGenerationTime

datetime

通知バッチの生成を終了した日時 (UTC)。

解説

Notification Services でインスタンスを作成すると、アプリケーション データベース内に NSExecuteRuleFiring ストアド プロシージャが作成されます。アプリケーションを更新すると、Notification Services ではストアド プロシージャが再コンパイルされます。

このストアド プロシージャは、アプリケーション定義ファイル (ADF) の要素 SchemaName で指定される、アプリケーション スキーマ内に格納されます。スキーマ名が指定されない場合、既定のスキーマ dbo が使用されます。

NSExecuteRuleFiring ストアド プロシージャを実行するときは、その前にジェネレータを無効にしておく必要があります。このストアド プロシージャでは、ユーザーが手動でジェネレータを実行します。したがって、ジェネレータの同時実行を許可する場合は、このストアド プロシージャの扱いが難しくなります。

ルール実行用にアプリケーション データベースを準備するだけで実際にルールを実行しない場合は、NSPrepareRuleFiring ストアド プロシージャを使用します。

権限

既定では、NSGenerator データベース ロール、NSRunService データベース ロール、db_owner 固定データベース ロール、および sysadmin 固定サーバー ロールのメンバに実行権限が与えられています。

戻り値

0 (成功) または 1 (失敗)

A. 結果をレポートし、クォンタム制限を無視する

次の例では、クォンタム ID を 1 に設定し、クォンタムのルールを実行します。このストアド プロシージャでは結果がレポートされ、ADF ファイルで指定されたクォンタム制限が無視されます。

アプリケーションでは、既定の SchemaName 設定が使用されます。この設定ではすべてのアプリケーション オブジェクトが dbo スキーマに格納されます。

EXEC dbo.NSSetQuantumClock 
    @QuantumId = 1;
EXEC dbo.NSExecuteRuleFiring 
    @ReportExecutionResults = 1,
    @DisableQuantumLimits = 0;

この例を実行した後でアプリケーションを有効にすると、クォンタム クロックはクォンタム ID 1 から継続されます。クォンタム クロックは、有効にされても、最新のクォンタムには自動的にリセットされません。

B. 既定の設定を使用する

次の例では、クォンタム ID を 100 に設定し、既定の設定を使用してクォンタムのルールを実行します。このストアド プロシージャでは結果がレポートされず、クォンタム制限が無視されます。

この例では、ADF の要素 SchemaName で指定された Stock スキーマ内に、ストアド プロシージャと他のすべてのアプリケーション オブジェクトが格納されます。

EXEC dbo.NSSetQuantumClock 
    @QuantumId = 100;
EXEC Stock.NSExecuteRuleFiring;

この例を実行した後でアプリケーションを有効にすると、クォンタム クロックはクォンタム ID 100 から継続されます。クォンタム クロックは、有効にされても、最新のクォンタムには自動的にリセットされません。

参照

関連項目

NSPrepareRuleFiring (Transact-SQL)
NSSetQuantumClock (Transact-SQL)
NSSetQuantumClockDate (Transact-SQL)
Notification Services ストアド プロシージャ (Transact-SQL)
NSPrepareRuleFiring (Transact-SQL)

その他の技術情報

Notification Services パフォーマンス レポート
SchemaName 要素 (ADF)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手