次の方法で共有


SubscriptionClass 要素 (ADF)

1 つのサブスクリプション クラスの定義が含まれます。

構文

<SubscriptionClasses>
    <SubscriptionClass>

要素の特性

特性 説明

データ型

なし。

既定値

なし。

個数

SubscriptionClasses 要素につき 1 個以上 (必須)。

更新

アプリケーションの更新時に追加および削除できます。

要素の関係

関係 要素

親要素

SubscriptionClasses 要素 (ADF)

子要素

SubscriptionClassName 要素 (ADF)

SubscriptionClass の Schema 要素 (ADF)

SubscriptionClass の FileGroup 要素 (ADF)

SubscriptionClass の IndexSqlSchema 要素 (ADF)

EventRules 要素 (ADF)

ScheduledRules 要素 (ADF)

SubscriptionClass の Chronicles 要素 (ADF)

解説

SubscriptionClass 要素を削除した後、アプリケーションを更新すると、サブスクリプション クラスが削除され、既存のサブスクリプション テーブルは "Old" を追加した名前に変更されます。既存のサブスクリプション テーブル インデックスは、変更されずに残ります。

既存のサブスクリプション テーブルから新しいサブスクリプション テーブルにデータを転送するには、手動で転送する必要があります。詳細については、「アプリケーションの更新」を参照してください。

使用例

次の例は、株価通知のサブスクリプション クラスを定義する SubscriptionClass 要素を示しています。このサブスクリプション クラスでは、次の処理を実行します。

  • サブスクリプション テーブルを定義し、そのテーブルを Secondary ファイル グループに配置し、テーブルのインデックスを SubscriberID 列に定義します。この列は、Notification Services によってサブスクリプション クラス スキーマに自動的に定義されます。
  • サブスクリプション クラスのイベント ルールを作成します。このイベント ルールでは、イベント トリガの通知を生成し、サブスクリプションの記録を更新します。
  • サブスクリプション クラスの定期的なルールを作成します。この定期的なルールでは、定期的なサブスクリプションを生成し、サブスクリプションの記録を更新します。
  • サブスクリプションの記録を作成します。
<SubscriptionClass>
    <SubscriptionClassName>StockSubscriptions</SubscriptionClassName>
    <Schema>
        <Field>
            <FieldName>DeviceName</FieldName>
            <FieldType>nvarchar(255)</FieldType>
            <FieldTypeMods>NOT NULL</FieldTypeMods>
        </Field>
        <Field>
            <FieldName>SubscriberLocale</FieldName>
            <FieldType>nvarchar(10)</FieldType>
            <FieldTypeMods>NOT NULL</FieldTypeMods>
        </Field>
        <Field>
            <FieldName>StockSymbol</FieldName>
            <FieldType>char(10)</FieldType>
            <FieldTypeMods>NOT NULL</FieldTypeMods>
        </Field>
        <Field>
            <FieldName>StockTriggerPrice</FieldName>
            <FieldType>money</FieldType>
            <FieldTypeMods>NOT NULL DEFAULT 10</FieldTypeMods>
        </Field>
    </Schema>
    <FileGroup>Secondary</FileGroup>
    <IndexSqlSchema>
        <SqlStatement>
        CREATE INDEX StockSubIndex 
        ON StockSubscriptions (SubscriberId);
        </SqlStatement>
    </IndexSqlSchema>
    <EventRules>
        <EventRule>
            <RuleName>StockSubscriptionNotifyRule</RuleName>
            <Action>
            -- Generate event-triggered notifications
            INSERT INTO StockNotifications 
            ( SubscriberId, DeviceName, SubscriberLocale,
            StockSymbol, StockPrice )
            SELECT S.SubscriberId, S.DeviceName,
                S.SubscriberLocale, E.StockSymbol, E.StockPrice
            FROM StockSubscriptions S JOIN StockEvents E
            ON S.StockSymbol = E.StockSymbol
            JOIN StockEventChron C
            ON S.StockSymbol = C.StockSymbol
            WHERE S.StockTriggerPrice &lt;= E.StockPrice
            AND S.StockTriggerPrice &gt; C.StockHighPrice;
            -- Maintain subscription chronicle
            INSERT StockSubscriptionChron
            (SubscriberId, StockSymbol, StockPrice)
            SELECT S.SubscriberId, S.StockSymbol, E.StockPrice
            FROM StockSubscriptions S JOIN StockEvents E
            ON S.StockSymbol = E.StockSymbol;
            </Action>
            <ActionTimeout>P0DT00H01M00S</ActionTimeout>
            <EventClassName>StockEvents</EventClassName>
        </EventRule>
    </EventRules>
    <ScheduledRules>
        <ScheduledRule>
            <RuleName>StockSubScheduledRule</RuleName>
            <Action>
            -- Generate scheduled notifications
            INSERT INTO ScheduledNotifications
            ( SubscriberId, DeviceName, SubscriberLocale,
            StockSymbol, StockPrice )
            SELECT S.SubscriberId, S.DeviceName, 
                S.SubscriberLocale, C.StockSymbol, C.StockPrice
            FROM StockSubscriptions S JOIN StockEventChron C
            ON S.StockSymbol = C.StockSymbol 
            WHERE S.StockTriggerPrice &lt;= C.StockHighPrice 
            GROUP BY S.StockSymbol, C.StockHighPrice;
            -- Maintain subscription chronicle
            INSERT StockSubscriptionChron
            (SubscriberId, StockSymbol, StockPrice)
            SELECT S.SubscriberId, S.StockSymbol, C.StockHighPrice
            FROM StockSubscriptions S JOIN StockEventChron C
            ON S.StockSymbol = C.StockSymbol;
            </Action>
            <ActionTimeout>P0DT00H00M45S</ActionTimeout>
        </ScheduledRule>
    </ScheduledRules>
    <Chronicles>
        <Chronicle>
            <ChronicleName>StockSubscriptionChron</ChronicleName>
            <SqlSchema>
                <SqlStatement>
                IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
                WHERE TABLE_NAME = &apos;StockSubscriptionChron&apos;)
                DROP TABLE StockSubscriptionChron;
                </SqlStatement>
                <SqlStatement>
                CREATE TABLE StockSubscriptionChron
                (
                SubscriberId bigint,
                StockSymbol char(10),
                StockPrice money
                PRIMARY KEY (SubscriberId)
                );
                </SqlStatement>
            </SqlSchema>
        </Chronicle>
    </Chronicles>
</SubscriptionClass>

参照

関連項目

アプリケーション定義ファイルのリファレンス

その他の技術情報

コア サブスクリプション クラスの定義
インスタンスとアプリケーションの更新

ヘルプおよび情報

SQL Server 2005 の参考資料の入手