定期的なルールの定義
アプリケーションで定期的なサブスクリプションをサポートする場合、少なくとも 1 つの定期的なルールを定義する必要があります。
定期的なルールは、定期的なサブスクリプションの通知を作成する 1 つ以上の Transact-SQL クエリの名前付きセットです。必要に応じてサブスクリプション記録のデータを操作することもできます。定期的なルールは各クォンタム中に実行され、そのクォンタムで評価するようにスケジュールされているサブスクリプションのみを評価します。
メモ : |
---|
定期的なルールが実行される正確なタイミングは、クォンタム期間によって異なります。 |
各サブスクリプション クラスには、1 つ以上の定期的なルールを含めることができます。ただし、定期的なルールの実行の順序を指定することはできません。定期的なルールは任意の順序で実行できます。
定期的なルールの処理
定期的なサブスクリプションは、関連付けられている通知をスケジュールされた時間に生成します。このスケジュールは、通常、サブスクリプションを作成するときにサブスクライバによって指定されます。Notification Services では、次のようなプロセスを使用して、定期的なルールから通知が生成されます。
- イベントが到着します。
- Notification Services がイベント クラスごとに 1 つのイベント バッチを作成し、各イベント バッチをそれぞれのイベント テーブルに挿入します。
- Notification Services が各イベント クラスのイベント記録ルールを実行します。これにより、イベント記録が更新されます。
- Notification Services が定期的なルールを実行して、処理されることになっているサブスクリプションのみを評価します。定期的なルールは、現在のイベント バッチのみを含むイベント クラス ビューではなく、イベント記録に対して実行されます。
- 定期的なルールによって、結果の通知が通知テーブルに挿入されます。このデータを使用して通知が構築され、配信されます。
定期的なルールは、スケジュールした時間にのみ通知が生成されるので、情報を定期的に更新する場合に適しています。たとえば、毎日の天気予報や毎週のポートフォリオ レポートなどのアプリケーションでは、定期的なルールを使用する必要があります。
定期的なルールの定義
定期的なルールは、サブスクリプション クラスの一部です。サブスクリプション クラスを定義するときには、少なくとも 1 つのルール (定期的なルールまたはイベント ドリブン ルール) を定義する必要があります。定期的なルールを定義するには、定期的なルール アイテムを作成します。その後、名前、実行するアクション、およびアクションのタイムアウト値を指定する必要があります。
定期的なルールを定義するには
- XML でアプリケーションを定義している場合は、ScheduledRule 要素 (ADF) を使用して定期的なルールを定義します。
- プログラムで定期的なルールを定義している場合は、SubscriptionScheduledRule クラスを使用して個々の定期的なルール オブジェクトを作成し、SubscriptionScheduledRules プロパティを使用してサブスクリプション クラスに追加します。
- 条件アクションを含む定期的なルールをプログラムで定義している場合は、SubscriptionConditionScheduledRule クラスを使用して個々の定期的なルール オブジェクトを作成し、SubscriptionConditionScheduledRules プロパティを使用してサブスクリプション クラスに追加します。
定期的なルールの名前付け
定期的なルールには、それぞれアプリケーション内で一意の名前を付ける必要があります。この名前は、各ルールを管理目的で識別するために使用します。
定期的なルールに名前を付けるには
- XML で定期的なルールを定義している場合は、ScheduledRule の RuleName 要素 (ADF) を使用して定期的なルールの名前を定義します。
- プログラムで定期的なルールを定義している場合は、SubscriptionScheduledRule クラス (NMO) で定期的なルールの名前を定義します。
- 条件アクションを含む定期的なルールをプログラムで定義している場合は、SubscriptionConditionScheduledRule クラス (NMO) を使用して定期的なルールの名前を定義します。
アクションまたは条件アクションの定義
アクションとは、Notification Services がルールを実行するたびに実行されるクエリです。サブスクリプション ルールには、単純なアクションと、より複雑な条件アクションを含めることができます。
- アクションには、サブスクリプション フィールドとイベント フィールドの一致に基づいて通知を生成するための Transact-SQL クエリが含まれます。サブスクライバは、サブスクリプションを作成するときに、この定義済みクエリのパラメータを定義します。単純なアクションの定義については、「アクションの定義」を参照してください。
- 条件アクションにも Transact-SQL クエリが含まれていますが、このクエリは、サブスクライバがサブスクリプションを定義できるビューを定義します。サブスクライバは、定義済みクエリのパラメータを指定する代わりに、関心のあるフィールドを選択し、あらかじめ決められた一連の演算子を使用して、独自の条件を定義します。条件アクションの定義については、「条件アクションの定義」を参照してください。
タイムアウト値の指定
アクションのタイムアウトは、アクションまたは条件アクションのステートメントが完了するまでの許容時間を指定します。ステートメントがタイムアウトになるまでに完了しなかった場合、Notification Services はトランザクションをロールバックして、定期的なルールを失敗としてマークし、イベント ログにエラーを書き込みます。
タイムアウト値を指定するには
- XML で定期的なルールを定義している場合は、ScheduledRule の ActionTimeout 要素 (ADF) を使用してタイムアウト値を定義します。
- プログラムで定期的なルールを定義している場合は、Microsoft.SqlServer.Management.Nmo.SubscriptionScheduledRule.ActionTimeout プロパティ (NMO) を使用してタイムアウト値を定義します。
- 条件アクションを含む定期的なルールをプログラムで定義している場合は、Microsoft.SqlServer.Management.Nmo.SubscriptionConditionScheduledRule.ActionTimeout プロパティ (NMO) を使用してタイムアウト値を定義します。
参照
概念
イベント ルールの定義
アクションの定義
条件アクションの定義
サブスクリプション ルールの定義
イベント クラスの記録の定義