Share via


イベント ルールの定義

アプリケーションがイベント ドリブン サブスクリプションをサポートする場合、少なくとも 1 つのイベント ルールを定義する必要があります。

イベント ルールは、イベント ドリブン サブスクリプションの通知を作成する、指定された 1 つ以上の Transact-SQL クエリのセットです。イベント ルールでは、必要に応じてイベント記録のデータを操作できます。イベント バッチが到着するとすぐに、各イベント バッチに対してイベント ルールが処理されます。

ms171059.note(ja-jp,SQL.90).gifメモ :
イベント ルールを実行する正確なタイミングは、クォンタム期間とアプリケーションでイベントを処理する方法によって異なります。詳細については、「ジェネレータ クォンタム期間の指定」および「イベント処理順序の指定」を参照してください。

各サブスクリプション クラスには、1 つ以上のイベント ルールを含めることができます。ただし、ルールの実行の順序を指定することはできません。イベント ルールは任意の順序で実行できます。

イベント ルールの処理

Notification Services では、次のようなプロセスによってイベント ルールから通知が生成されます。

  1. イベントが到着します。
  2. Notification Services がイベント クラスごとに 1 つのイベント バッチを作成し、各イベント バッチをそれぞれのイベント テーブルに追加します。
  3. Notification Services がイベント クラスのすべての記録ルールを実行します。これにより、イベント記録テーブルが保持されます。
    記録ルールが失敗すると、処理が停止して、イベント バッチは失敗としてマークされます。イベント バッチ処理が成功しないと、イベント ルールは実行されません。
  4. Notification Services はイベント ルールを実行し、イベント ルールはイベント データをサブスクリプション データに結合して通知を生成します。イベント ルールは、イベント クラスの現在のイベントのみを示すビューと、有効化されたサブスクリプションのみを示すサブスクリプション ビューに対して実行されます。イベント ルールでは、イベント記録データを使用することもできます。
  5. イベント ルールは、通知テーブルに結果の通知を追加します。このデータは、通知の作成と配布に使用されます。

イベントが到着するとすぐに通知が生成されるため、イベント ルールは、ランダムに発生するイベントおよび時間依存のデータに適しています。イベント ルールを使用する必要があるアプリケーションの例として、オークション更新サブスクリプションや最新ニュース通知などがあります。

イベント ルールの定義

イベント ルールは、サブスクリプション クラスの一部です。サブスクリプション クラスを定義するときには、少なくとも 1 つのルール (イベント ルールまたは定期的なルール) を定義する必要があります。イベント ルールを定義するには、イベント ルール アイテムを作成します。次に、名前、実行するアクション、およびリンクされているイベント クラスの名前を指定します。また、イベント ルール アクションのタイムアウト値も指定できます。

イベント ルールを定義するには

  • XML でアプリケーションを定義している場合は、EventRule 要素 (ADF) を使用してイベント ルールを定義します。
  • プログラムでイベント ルールを定義している場合は、個々の SubscriptionEventRule オブジェクトを作成し、SubscriptionEventRules プロパティを使用してサブスクリプション クラスに追加します。
  • 条件アクションを含むイベント ルールをプログラムで定義している場合は、個々の SubscriptionConditionEventRule オブジェクトを作成し、SubscriptionConditionEventRules プロパティを使用してサブスクリプション クラスに追加します。

イベント ルールの名前付け

各イベント ルールには、アプリケーション内で一意の名前を付ける必要があります。この名前は、各ルールを管理目的で識別するために使用します。

イベント ルールに名前を付けるには

  • XML でイベント ルールを定義している場合は、EventRule の RuleName 要素 (ADF) を使用してイベント ルールの名前を定義します。
  • プログラムでイベント ルールを定義している場合は、SubscriptionEventRule クラス (NMO) でイベント ルールの名前を定義します。
  • 条件アクションを含むイベント ルールをプログラムで定義している場合は、SubscriptionConditionEventRule クラス (NMO) を使用してイベント ルールの名前を定義します。

アクションまたは条件アクションの定義

アクションとは、Notification Services がルールを実行するたびに実行されるクエリです。イベント ルールには、単純なアクションと、より複雑な条件アクションを含めることができます。

  • アクションには、サブスクリプション フィールドとイベント フィールドの一致に基づいて通知を生成するための Transact-SQL クエリが含まれます。サブスクライバは、サブスクリプションを作成するときに、この定義済みクエリのパラメータを定義します。単純なアクションの定義については、「アクションの定義」を参照してください。
  • 条件アクションにも Transact-SQL クエリが含まれていますが、このクエリは、サブスクライバがサブスクリプションを定義できるビューを定義します。サブスクライバは、定義済みクエリのパラメータを指定する代わりに、関心のあるフィールドを選択し、あらかじめ決められた一連の演算子を使用して、独自の条件を定義します。条件アクションの定義については、「条件アクションの定義」を参照してください。

タイムアウト値の指定

アクションのタイムアウトは、アクションまたは条件アクションのステートメントが完了するまでの許容時間を指定します。ステートメントがタイムアウトになるまでに完了しなかった場合、Notification Services はトランザクションをロールバックして、イベント ルールを失敗としてマークし、イベント ログにエラーを書き込みます。

タイムアウト値を指定するには

イベント クラスへのルールのリンク

各イベント ルールは、単一のイベント クラスに関連付けられる必要があります。Notification Services は、指定されたイベント クラスからイベント バッチが処理された後にのみイベント ルールを実行します。

イベント クラスにルールをリンクさせるには

参照

概念

定期的なルールの定義
アクションの定義
条件アクションの定義
サブスクリプション ルールの定義
イベント クラスの記録の定義

ヘルプおよび情報

SQL Server 2005 の参考資料の入手