定义订阅架构

Notification Services 通过使用连接事件和订阅数据的 Transact-SQL 查询来生成通知。对于大多数应用程序而言,必须指定在生成通知时使用的订阅字段。可在订阅类的架构中指定这些字段。

此主题介绍了 Notification Services 添加的默认字段、可以向架构中添加的标准字段以及如何创建自定义字段。

默认订阅字段

所有订阅都需要共同的信息。Notification Services 必须能唯一地标识每个订阅、标识每个订阅的订阅方并能够确定是否已启用订阅。如果订阅类支持计划订阅,则订阅必须与订阅计划相关联。

为了简化应用程序开发,Notification Services 将自动为此共同信息添加下列订阅类字段:

ms171409.note(zh-cn,SQL.90).gif注意:
不要在订阅类架构中定义下列字段。否则,创建应用程序时会因字段定义重复而失败。
  • Notification Services 包括 SubscriptionIdSubscriberIdEnabled 字段。Notification Services 在创建应用程序时,会向订阅表定义中添加以下列:
    • SubscriptionId 是一个数据类型为 bigint 的标识列。对于每个新订阅,Notification Services 都为此列提供一个值。
    • SubscriberId 是一个数据类型为 nvarchar(255) 的列。添加订阅时,订阅管理界面必须提供订阅方的 ID 值。
    • Enabled 是一个数据类型为 Boolean 的字段,可以通过编程方式为每个订阅设置此字段。将 Enabled 值设置为 false 将挂起订阅的通知生成。其默认值为 true
  • 如果订阅类具有计划规则,则 Notification Services 将包括一个 ScheduleId 字段。在订阅表中,此字段成为指向订阅计划表的外键。当用户创建计划订阅时,此计划值在订阅管理界面上定义。ScheduleId 是一个数据类型为 int 的列,当订阅类同时支持事件驱动订阅和计划订阅时,此列可接受 NULL 值。

标准字段:DeviceName 和 SubscriberLocale

根据应用程序,您可能需要在订阅类架构中定义以下两个字段:DeviceNameSubscriberLocale。通常在每个订阅类中定义这些字段,以允许订阅方选择设备和区域设置,但并不要求必须定义这些字段。如果定义了这些字段,则分发服务器可以将此处提供的信息用于通知格式和传递。

DeviceName 字段

订阅方设备是将通知传递到的地方。设备可以是电子邮件、Windows Messenger、移动电话或应用程序支持的其他任何设备。

生成通知时,通知数据必须包括通知传递的设备名。如果允许订阅方在创建订阅时指定设备,则请在订阅类架构中包括 DeviceName 字段。

使用 DeviceName 字段的下列属性:

  • 字段名称:DeviceName
  • 字段类型:nvarchar(255)
  • 字段修饰符:NOT NULL

关于设备的信息(如订阅方地址)位于实例数据库的订阅方数据中。使用 NSSubscriberDeviceView 视图可以查看 Notification Services 实例的订阅方和订阅方设备信息。有关详细信息,请参阅 NSSubscriberDeviceView

如果架构中不包括 DeviceName 字段,则必须执行下列操作之一:

  • 如果应用程序只支持一个设备,则请在用于生成通知的 Transact-SQL 规则中提供一个静态设备名。
  • 如果应用程序支持多个设备,则请动态选择一个设备。例如,一个订阅方可能有多个设备,应用程序可以基于一天中的时间选择设备。在工作时间中,可以将所有通知发送给订阅方的商业电子邮件帐户。在非工作时间中,可以将紧急通知发送到订阅方的电话,将所有其他通知发送到订阅方的家庭电子邮件帐户。

SubscriberLocale 字段

区域设置是通知的语言和国家/地区设置。Notification Services 支持许多区域设置。有关区域设置列表的信息,请参阅Subscriber Locale Codes

生成通知时,通知数据必须包括区域设置。如果允许订阅方指定区域设置,则请在订阅类架构中包括 SubscriberLocale 字段。

使用 SubscriberLocale 字段的下列属性:

  • 字段名称:SubscriberLocale
  • 字段类型:nvarchar(10)
  • 字段修饰符:NOT NULL

如果不包含 SubscriberLocale 字段,则必须执行下列操作之一:

  • 如果应用程序只支持单个区域设置,则请在用于生成通知的 Transact-SQL 规则中提供一个静态区域设置。
  • 如果应用程序支持多个区域设置,则请从其他源选择订阅方区域设置,如其他数据库中的用户配置文件表。

自定义订阅字段

大多数应用程序都有自定义订阅字段。这些字段定义订阅方可在其订阅中自定义、并用于在订阅表中创建列的值。

创建自定义字段需要了解订阅方可为自定义订阅而提供的信息。例如,一个天气应用程序可能只允许用户选择一个城市,因此只需定义一个“city”自定义字段。一个航空应用程序可能允许用户选择航班的起点、终点、价格和运载工具,因此将创建如 LeavingFromGoingToPriceCarrier 等字段。

定义自定义字段时,还必须定义此字段的 SQL Server 数据类型和任意字段修饰符,如字段是否接受 NULL 值。由于这些字段将定义表列,所以必须遵循定义表列的规则。有关详细信息,请参阅 CREATE TABLE (Transact-SQL)

ms171409.note(zh-cn,SQL.90).gif注意:
有关支持类型列表,请参阅FieldType Element for SubscriptionClass/Schema/Field (ADF)

定义架构

简而言之,定义订阅类的架构时,要定义自定义字段并且应根据需要定义标准 DeviceNameSubscriberLocale 字段。不必定义默认字段,如 SubscriberId

定义订阅类的架构

如果使用 XML 定义应用程序,则应在应用程序定义文件 (ADF) 中定义订阅类的架构。如果以编程方式定义应用程序,则应使用 Notification Services 管理对象 (NMO) 定义订阅类的架构。

示例

有关架构示例,请参阅订阅架构示例

请参阅

概念

定义核心订阅类
定义订阅规则
为订阅类定义索引
为订阅类定义历史记录
收集与订阅相关的信息

其他资源

定义订阅类
数据类型(数据库引擎)
CREATE TABLE (Transact-SQL)
FieldType Element for SubscriptionClass/Schema/Field (ADF)
开发订阅管理界面

帮助和信息

获取 SQL Server 2005 帮助