Определение схемы подписок

Службы Notification Services создают уведомления, используя запросы на языке Transact-SQL, соединяющие данные событий и подписок. Для большинства приложений необходимо задать поля подписок, которые используются при создании уведомлений. Эти поля задаются в схеме класса подписки.

В этом разделе содержится описание полей по умолчанию, которые добавляются службами Notification Services, стандартных полей, которые можно добавить к схеме, и создание пользовательских полей.

Поля подписок по умолчанию

Для всех подписок необходимы общие сведения. Службы Notification Services должны иметь возможность уникально идентифицировать каждую подписку, идентифицировать подписчика для каждой подписки и определить, включена ли подписка. Если класс подписок поддерживает запланированные подписки, то подписка должна быть связана с расписанием подписки.

Для упрощения разработки приложений службы Notification Services автоматически добавляют следующие поля классов подписки для этих общих данных.

ms171409.note(ru-ru,SQL.90).gifПримечание.
Не определяются следующие поля в схеме класса подписки. Иначе создание приложения завершится ошибкой в связи с дублированием определений полей.
  • Службы Notification Services включают поля SubscriptionId, SubscriberId и Enabled. Когда службы Notification Services создают приложение, они добавляют следующие столбцы к определению таблицы подписок:
    • SubscriptionId является столбцом идентификаторов типа bigint. Службы Notification Services предоставляют значение для этого столбца для каждой новой подписки.
    • SubscriberId является столбцом типа nvarchar(255). Интерфейс управления подписками должен предоставлять значение идентификатора подписчика при добавлении подписки.
    • Enabled является полем типа Boolean, которое можно установить программным путем для каждой подписки. Установка значения Enabled равным false приостанавливает создание уведомления для подписки. По умолчанию значение равно true.
  • Если класс подписки имеет запланированные правила, то службы Notification Services включают поле ScheduleId. В таблице подписок оно становится внешним ключом для таблицы расписания подписок. Это значение расписания определяется в интерфейсе управления подписками, когда пользователь создает запланированную подписку. ScheduleId является столбцом типа int, допускающим значения NULL, в случае, если класс подписки поддерживает как подписку, управляемую событиями, так и запланированную подписку.

Стандартные поля: DeviceName и SubscriberLocale

В зависимости от приложения может потребоваться определить два поля в схеме класса подписки: DeviceName и SubscriberLocale. Эти поля часто определяются в каждом классе подписки, чтобы позволить подписчику выбрать устройство и языковые стандарты, но они не являются обязательными. Если эти поля определены, то распространитель может использовать эти данные для форматирования и доставки уведомлений.

Поле 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, используемое для создания уведомлений.
  • Если приложение поддерживает несколько языковых стандартов, то выберите языковой стандарт подписчика из другого источника, например из таблицы профиля пользователя в другой базе данных.

Пользовательские поля подписок

В большинстве приложений также присутствуют пользовательские поля подписок. Эти поля определяют значения, которые подписчики могут настраивать в своих подписках, а также которые используются для создания столбцов в таблице подписок.

Чтобы создать пользовательские поля, необходимо знать, какие данные подписчики могут предоставлять для настройки своих подписок. Например, приложение Weather может разрешать подписчикам выбирать только город, поэтому необходимо определить только пользовательское поле «city». Приложение для продажи авиабилетов может позволять подписчикам выбирать аэропорт вылета, целевой аэропорт, цену и авиакомпанию, поэтому необходимо создать такие поля, как LeavingFrom, GoingTo, Price и Carrier.

При определении пользовательского поля также необходимо определить тип данных поля SQL Server и все модификаторы, например допускается ли использовать в поле значение NULL. Поскольку эти поля определяют столбцы таблиц, то необходимо соблюдать требования по определению столбцов таблиц. Дополнительные сведения см. в разделе CREATE TABLE (Transact-SQL).

ms171409.note(ru-ru,SQL.90).gifПримечание.
Список поддерживаемых типов см. в разделе FieldType Element for SubscriptionClass/Schema/Field (ADF).

Определение схемы

В общем, при определении схемы для класса подписки определяются пользовательские поля и, при их использовании, стандартные поля DeviceName и SubscriberLocale. Поля по умолчанию, например SubscriberId, не определяются.

Определение схемы для класса подписки

При определении приложения с помощью XML-документа определите схему для класса подписки в файле определения приложения (ADF). При определении приложения программным путем используйте управляющие объекты служб Notification Services, чтобы определить схемы для класса подписки.

Примеры

Примеры схем см. в разделе Примеры схем подписки.

См. также

Основные понятия

Определение основного класса подписки
Определение правил подписок
Определение индексов для класса подписки
Определение хроники для класса подписки
Сбор данных, связанных с подпиской

Другие ресурсы

Определение классов подписки
Типы данных (компонент Database Engine)
CREATE TABLE (Transact-SQL)
FieldType Element for SubscriptionClass/Schema/Field (ADF)
Разработка интерфейсов управления подписками

Справка и поддержка

Получение помощи по SQL Server 2005