サブスクリプション スキーマの定義

Notification Services は、イベントとサブスクリプション データを結合する Transact-SQL クエリを使用して通知を生成します。大部分のアプリケーションでは、通知を生成するときに使用されるサブスクリプション フィールドを指定する必要があります。サブスクリプション クラスのスキーマでこれらのフィールドを指定します。

このトピックでは、Notification Services によって追加される既定のフィールド、スキーマに追加できる標準フィールド、およびカスタム フィールドの作成方法について説明します。

既定のサブスクリプション フィールド

すべてのサブスクリプションは共通の情報を必要とします。Notification Services は、各サブスクリプションとそのサブスクライバを一意に識別し、サブスクリプションが有効かどうか判断する必要があります。サブスクリプション クラスが定期的なサブスクリプションをサポートする場合、サブスクリプションをサブスクリプションのスケジュールに関連付ける必要があります。

Notification Services は、この共通情報を格納するために、次のサブスクリプション クラス フィールドを自動的に追加します。これによって、アプリケーションの開発作業が簡素化されます。

ms171409.note(ja-jp,SQL.90).gifメモ :
サブスクリプション クラス スキーマでは、次のフィールドを定義しないでください。定義した場合、フィールドの重複定義のため、アプリケーションの作成に失敗します。
  • Notification Services の、SubscriptionIdSubscriberId、および Enabled フィールド。Notification Services は、アプリケーションの作成時に、サブスクリプション テーブル定義に次の列を追加します。
    • SubscriptionId は、bigint 型の ID 列です。Notification Services は、各新規サブスクリプションにこの列の値を提供します。
    • SubscriberId は、nvarchar(255) 型の列です。サブスクリプションを追加する場合、サブスクリプション管理インターフェイスでサブスクライバ ID の値を提供する必要があります。
    • Enabled は、サブスクリプションごとにプログラムで設定できる Boolean 型のフィールドです。 Enabled の値を false に設定すると、サブスクリプションの通知の生成が中断されます。既定値は true です。
  • Notification Services の ScheduleId フィールド (サブスクリプション クラスに定期的なルールがある場合)。サブスクリプション テーブルでは、このフィールドがサブスクリプション スケジュール テーブルへの外部キーになります。ユーザーが定期的なサブスクリプションを作成するときに、スケジュール値がサブスクリプション管理インターフェイスで定義されます。サブスクリプション クラスがイベント ドリブン サブスクリプションと定期的なサブスクリプションをサポートする場合、ScheduleId は、NULL 値を許容する int 型の列になります。

標準フィールド : DeviceName と SubscriberLocale

アプリケーションによっては、サブスクリプション クラス スキーマで DeviceName および SubscriberLocale の 2 つのフィールドを定義することができます。各サブスクリプション クラスでこれらのフィールドを定義して、サブスクライバがデバイスとロケールを選択できるようにする場合がよくあります。ただし、これらのフィールドは必須ではありません。フィールドを定義した場合、ディストリビュータがこの情報を使用して通知の書式設定および配信を実行できます。

DeviceName フィールド

サブスクライバ デバイスは通知の配信先です。デバイスには、電子メール、Windows Messenger、携帯電話、またはアプリケーションがサポートする他の任意のデバイスを指定できます。

通知を生成する場合、通知配信のデバイス名を通知データに含める必要があります。サブスクライバがサブスクリプション作成時にデバイスを指定できるようにする場合は、サブスクリプション クラス スキーマに DeviceName フィールドを追加します。

DeviceName フィールドには、次のプロパティを使用します。

  • フィールド名 : DeviceName
  • フィールドの型 : nvarchar(255)
  • フィールド修飾子 : NOT NULL

サブスクライバのアドレスなどデバイスに関する情報は、インスタンス データベースのサブスクライバ データにあります。NSSubscriberDeviceView ビューを使用して、Notification Services インスタンスのサブスクライバおよびサブスクライバ デバイスの情報を確認します。詳細については、「NSSubscriberDeviceView」を参照してください。

また、スキーマから DeviceName フィールドを除外する場合は、次のいずれかの操作を行う必要があります。

  • アプリケーションでデバイスを 1 つだけサポートする場合は、通知の生成に使用された Transact-SQL ルールの静的なデバイス名を指定します。
  • アプリケーションで複数のデバイスをサポートする場合は、デバイスを動的に選択します。たとえば、サブスクライバが複数のデバイスを使用し、アプリケーションが時間帯を基にデバイスを選択する場合があります。営業時間中は、サブスクライバの業務用電子メール アカウントにすべての通知を送信できます。営業時間外は、重要な通知をサブスクライバの電話に送信し、その他のすべての通知をサブスクライバの自宅用電子メール アカウントに送信できます。

SubscriberLocale フィールド

ロケールは通知の言語および国/地域を表します。Notification Services は多数のロケールをサポートします。ロケールの一覧については、「サブスクライバ ロケール コード」を参照してください。

通知を生成する場合、ロケールを通知データに含める必要があります。サブスクライバがロケールを指定できるようにする場合は、サブスクリプション クラス スキーマに SubscriberLocale フィールドを追加します。

SubscriberLocale フィールドには、次のプロパティを使用します。

  • フィールド名 : SubscriberLocale
  • フィールドの型 : nvarchar(10)
  • フィールド修飾子 : NOT NULL

SubscriberLocale フィールドを除外する場合は、次のいずれかの操作を行う必要があります。

  • アプリケーションでロケールを 1 つだけサポートする場合は、通知の生成に使用された Transact-SQL ルールの静的なロケールを指定します。
  • アプリケーションで複数のロケールをサポートする場合は、他のデータベースのユーザー プロファイル テーブルなど別のソースからサブスクライバ ロケールを選択します。

カスタム サブスクリプション フィールド

大部分のアプリケーションには、カスタム サブスクリプション フィールドもあります。これらのフィールドでは、サブスクライバがサブスクリプションでカスタマイズでき、サブスクリプション テーブルの列の作成に使用される値を定義します。

カスタム フィールドを作成するには、サブスクライバがサブスクリプションをカスタマイズするためにどのような情報を提供できるかを知る必要があります。たとえば、天気アプリケーションでは、ユーザーが都市のみを選択できるため、定義するのは "都市" カスタム フィールドだけになります。フライト アプリケーションでは、ユーザーが出発地、目的地、運賃、および航空会社を選択できるため、LeavingFromGoingToPriceCarrier などのフィールドを作成することになります。

カスタム フィールドを定義する場合、フィールドの SQL Server データ型や、フィールドで NULL 値を許容するかどうかなどのフィールド修飾子も合わせて定義する必要があります。これらのフィールドによってテーブルの列が定義されるため、テーブルの列定義に関するガイドラインに従う必要があります。詳細については、「CREATE TABLE (Transact-SQL)」を参照してください。

ms171409.note(ja-jp,SQL.90).gifメモ :
サポートされる型の一覧については、「SubscriptionClass/Schema/Field の FieldType 要素 (ADF)」を参照してください。

スキーマの定義

サブスクリプション クラスのスキーマを定義する場合、カスタム フィールドを定義します。また、標準の DeviceName フィールドや SubscriberLocale フィールドを使用する場合は、これらのフィールドも定義します。SubscriberId など既定のフィールドは定義しません。

サブスクリプション クラスのスキーマを定義するには

XML を使用してアプリケーションを定義している場合は、アプリケーション定義ファイル (ADF) でサブスクリプション クラスのスキーマを定義します。プログラムでアプリケーションを定義している場合は、Notification Services 管理オブジェクト (NMO) を使用してサブスクリプション クラスのスキーマを定義します。

スキーマの例については、「サブスクリプション スキーマの例」を参照してください。

参照

概念

コア サブスクリプション クラスの定義
サブスクリプション ルールの定義
サブスクリプション クラスのインデックスの定義
サブスクリプション クラスの記録の定義
サブスクリプション関連情報の収集

その他の技術情報

サブスクリプション クラスの定義
データ型 (データベース エンジン)
CREATE TABLE (Transact-SQL)
SubscriptionClass/Schema/Field の FieldType 要素 (ADF)
サブスクリプション管理インターフェイスの開発

ヘルプおよび情報

SQL Server 2005 の参考資料の入手