次の方法で共有


イベント データの最高値を使用して通知の重複を防止する例

以下の例では、イベント記録テーブルと指定した時間内のイベント データの最高値を使用して、通知の重複を防ぐ方法を示しています。この例では、選択した株式の価格が定義済みのしきい値を超えると、株価通知アプリケーションによって通知が行われます。

シナリオ

このアプリケーションは、株式の新しいイベント データを 20 秒ごとに Web サービスから取得します。朝のデータを次の表に示します。

時刻 銘柄 株価 (US ドル)

09:00 GMT

AWKS

69.98

09:20 GMT

AWKS

70.35

09:40 GMT

AWKS

70.87

10:00 GMT

AWKS

71.55

10:20 GMT

AWKS

72.00

ユーザー独自のイベント ドリブン サブスクリプションは、AWKS の株価が $71.00 (US ドル) 以上になったときに通知するためのものです。このため、10:00 GMT のデータに基づいて通知が受信されます。イベント バッチが処理され、通知が生成されると、このアプリケーションに対して定義されているイベント記録ルールによって、当日その時点までの高値 ($71.55) がイベント記録テーブルに入力されるかまたは更新されます。

サブスクリプション ルール

10:20 GMT のイベント データが到着し、処理されます。サブスクリプション ルールで定義されている通知生成アクションは、イベント記録テーブルを使用して、通知が重複することを防ぎます。これは、いったんトリガ価格を超えたら、新しい高値に達しない限り、重複する通知を排除することによって行われます。

-- Generate notifications 
SELECT dbo.StockNotificationNotify(S.SubscriberId,
    S.SubscriberDeviceName, S.SubscriberLocale,
    E.StockSymbol, E.StockPrice)
FROM dbo.StockSubscriptions S 
    JOIN dbo.StockEvents E
        ON S.StockSymbol = E.StockSymbol
    JOIN dbo.StockEventChron C
        ON S.StockSymbol = C.StockSymbol
WHERE S.StockTriggerPrice <= E.StockPrice
    AND S.StockTriggerPrice > C.StockHighPrice

-- Insert new events into event chronicle
INSERT dbo.StockEventChron(StockSymbol, StockHighPrice)
SELECT E.StockSymbol, E.StockPrice
FROM dbo.StockEvents E
WHERE E.StockSymbol
    NOT IN (SELECT StockSymbol FROM dbo.StockEventChron)

-- Update existing events in event chronicle
UPDATE dbo.StockEventChron
SET C.StockHighPrice = E.StockPrice
FROM dbo.StockEvents E JOIN dbo.StockEventChron C
ON E.StockSymbol = C.StockSymbol
WHERE E.StockPrice > C.StockHighPrice
ms166492.note(ja-jp,SQL.90).gif重要 :
アプリケーションを XML ファイルで定義している場合は、">" などの予約 XML 文字をエンティティ参照に置き換える必要があります。詳細については、「XML の予約文字」を参照してください。

結果

トリガ価格が $71.55 以下のサブスクリプションは、既に通知を受信しており、別の通知を受信することはありません。保管されている高値 $71.55 より高く、新しい高値 $72.00 以下のトリガ価格を持つサブスクリプションは、通知を受信します。通知が生成されると、イベント記録ルールによって、イベント記録テーブルが最新のデータで再度更新されます。

参照

概念

イベント クラスの記録の定義
イベント記録テーブルの定義
サブスクリプション ルールの定義
定期的なサブスクリプションでのイベント記録の使用例
イベント データの比較による通知の重複防止の例

ヘルプおよび情報

SQL Server 2005 の参考資料の入手