Определение схемы уведомления

Правила подписки вставляют уведомления в представление уведомлений. Это преставление таблицы уведомлений, имя которого соответствует классу уведомлений. Схемы представления и базовой таблицы извлекаются из схемы класса уведомлений. Поля, из которых состоит эта схема, определяются в классе уведомлений.

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

Поля уведомлений по умолчанию

При создании таблицы, в которой хранятся уведомления для класса уведомлений, службы Notification Services создают по одному столбцу в таблице для каждого объявленного поля уведомлений и добавляют пять других столбцов, используемых для форматирования и доставки уведомлений:

ms172546.note(ru-ru,SQL.90).gifПримечание.
Не определяйте следующие поля в схеме класса уведомлений. Иначе создание приложения завершится сбоем в связи с определением дублирующихся полей.
  • NotificationId — это столбец bigint. Службы Notification Services вводят значение в это поле для каждого уведомления. Это значение уникально в пределах класса уведомлений.
  • NotificationBatchId — это столбец bigint. При обработке каждого правила, формирующего уведомления, создается один или несколько пакетов уведомлений. Службы Notification Services автоматически вставляют номер пакета в таблицу уведомлений.
  • SubscriberId — это столбец nvarchar(255), содержащий идентификатор подписчика для созданного уведомления. Службы Notification Services используют этот идентификатор подписчика для поиска сведений о доставке уведомления. Правило подписки, создающее уведомления, должно вставить это значение.
  • DeviceName — это столбец nvarchar(255), содержащий имя устройства подписчика, хранимое в таблице SubscriberDevices в базе данных экземпляра. Службы Notification Services используют имя устройства для получения сведений о доставке, а также могут предоставить имя устройства модулю форматирования данных для пользовательского форматирования. Правило подписки, создающее уведомления, должно вставить это значение. Помните, что столбцы SubscriberId и DeviceName должны соответствовать записи в таблице SubscriberDevices.
  • SubscriberLocale — это столбец nvarchar(10), содержащий код языкового стандарта. Этот код языкового стандарта должен быть одним из поддерживаемых кодов языковых стандартов и должен быть вставлен правилом подписки. Службы Notification Services передают эти сведения модулю форматирования данных, чтобы он мог произвести форматирование, относящееся к языковому стандарту. Список поддерживаемых кодов см. в разделе Subscriber Locale Codes.

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

  • DeliveryStatusCode — это столбец tinyint, содержащий код состояния доставки. Эти сведения не предназначены для использования в отчетах.
  • SentTime — это столбец datetime, содержащий время, в которое протокол доставки сообщил о состоянии доставки уведомления.
  • LinkNotificationId — это столбец bigint, использующийся только при сводной доставке. Если уведомление было включено в сводку и не было первым уведомлением в этой сводке, то данное поле содержит идентификатор первого уведомления. Первое уведомление содержит сведения о состоянии и времени.

Эти поля не предназначены для использования при отладке и в отчетах. Вместо этого необходимо использовать поле Представление NS<ИмяКлассаУведомлений>NotificationDistribution, предоставляющее эти сведения в удобочитаемом формате.

Пользовательские поля уведомлений

Пользовательские поля — это поля, в которых хранятся данные, интересующие подписчиков, или используемые для создания конечного уведомления.

При определении пользовательских полей для класса уведомлений необходимо знать, какие данные нужно отправлять, и эти данные должны соответствовать данным, созданным правилом подписки, формирующим уведомления.

Для каждого пользовательского поля необходимо определить имя поля и тип данных. При необходимости отправки уведомлений, включающих прогноз погоды, можно определить следующие поля уведомлений:

  • Имя поля: City; тип поля: nvarchar(35)
  • Имя поля: State; тип поля: nvarchar(35)
  • Имя поля: Forecast; тип поля: nvarchar(3500)

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

При использовании сводной доставки и необходимости группирования всех уведомлений подписчика для одного состояния, значение сводной группировки для этого поля устанавливается равным true. Новым определением для поля State будет следующее:

  • Имя поля: State; тип поля: nvarchar(35); сводное группирование: true

Дополнительные сведения о сводной доставке см. в разделе Задание сводной доставки или многоадресной доставки.

Определение полей для класса уведомлений

  • При определении приложения с помощью XML-документа определите отдельные поля в Fields Element for Schema (ADF).
  • При определении приложения с использованием управляющих объектов служб Notification Services (NMO) создайте отдельные поля с использованием объектов NotificationField и добавьте их к NotificationFieldCollection, используя свойство NotificationFields.

Вычисляемые поля

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

Вычисляемые поля используют выражения на языке Transact-SQL для создания значения для поля уведомления немедленно, до передачи уведомления модулю форматирования данных. Можно использовать любое выражение на языке Transact-SQL, которое может быть оценено в составе запроса SELECT в базе данных приложений. Это включает использование произвольных констант и вызовов функций.

ms172546.note(ru-ru,SQL.90).gifПримечание.
В синтаксисе языка Transact-SQL строковые константы должны быть заключены в кавычки. Таким образом, при использовании строки в вычисляемом поле ее необходимо заключить в одинарные кавычки. Если строка имеет формат Юникода, то добавьте букву N перед первой кавычкой, например, N'моя_строка'.

При необходимости добавления вычисляемого поля к классу уведомлений определяется имя поля и выражение на языке Transact-SQL. Например, при необходимости конвертации цены в форматированную строку нужно задать следующее определение вычисляемого поля:

  • Имя поля: FormattedStockPrice;
  • Выражение на языке Transact-SQL: CONVERT(NVARCHAR(10), StockPrice, 1)

При отправке уведомления модулю форматирования данных вычисляемое поле берет значение из поля StockPrice и преобразует его в форматированную строку. Например, если поле StockPrice имеет значение формата money равное 1 000,70, то поле FormattedStockPrice будет следующей строкой: 1,000.70.

Также можно задать, что вычисляемое поле используется для определения того, какие уведомления группируются для сводной доставки. Чтобы сгруппировать уведомления с одинаковыми значениями вычисляемого поля, установите свойство сводного группирования для вычисляемого поля равным true.

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

См. также

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

Настройка модулей форматирования данных
Задание сводной доставки или многоадресной доставки
Определение размера пакета уведомлений
Задание срока действия уведомлений
Задание сводной доставки или многоадресной доставки

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

Определение классов уведомлений
Настройка протоколов доставки
Выражения (Transact-SQL)
CREATE TABLE (Transact-SQL)
Определение классов уведомлений
Определение приложений служб Notification Services

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

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