Занятие 11. Передача событий в приложение Weather

В этом шаге будет использоваться сценарий Transact-SQL для передачи событий в приложение Weather, а затем будет выполнен просмотр итоговых уведомлений.

Данные событий

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

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

Если данные событий отсутствуют, нет оснований выполнять правила. Поэтому уведомления в этом случае не создаются.

События WeatherData

В этом приложении будет передан пакет событий с использованием хранимых процедур отправки событий. Вначале будет выполнена хранимая процедура NSEventBeginBatchWeatherData, чтобы открыть пакет событий. В качестве поставщика событий необходимо указать внепроцессный поставщик событий «WeatherSPEventProvider», определенный на занятии 6.

ms170427.Caution(ru-ru,SQL.90).gifВнимание!
Эти инструкции нельзя выполнять по отдельности. Они открывают и закрывают пакет событий и должны выполняться в одной транзакции. Чтобы выполнить эти запросы, запустите сценарий AddWeatherEvents.sql, как это описано далее на этом занятии.
-- Use the weather application's database.
USE TutorialWeather;
-- Start an event batch.
DECLARE @BatchID bigint;
EXEC dbo.NSEventBeginBatchWeatherData N'WeatherSPEventProvider', @BatchID OUTPUT;

После создания пакета событий будет использована хранимая процедура NSEventWriteWeatherData, чтобы добавить три события в приложение Weather. Необходимо указать идентификатор пакета событий, а затем значения для полей событий. Ниже следует образец одного события.

-- Submit events.
EXEC dbo.NSEventWriteWeatherData
    @EventBatchId=@BatchID,
    @City=N'Seattle',
    @Date=CONVERT(DATETIME, '2005-04-20 13:00:00', 120),
    @Low = 31,
    @High = 52,
    @Forecast=N'Sunny'

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

-- Flush event batch.
EXEC dbo.NSEventFlushBatchWeatherData @BatchID;

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

-- Display event batch ID
SELECT @BatchID 'Event Batch';

Передача событий в приложение Weather

Используйте запрос AddWeatherEvents.sql, чтобы добавить события в приложение Weather.

Отправка событий в приложение Weather

  1. В обозревателе решений раскройте элемент Weather, затем раскройте элемент Запросы и откройте файл AddWeatherEvents.sql.

  2. Проверьте код Transact-SQL.

  3. Нажмите клавишу F5, чтобы выполнить запрос.

    Будет получено два результирующих набора. Первый результирующий набор возвращает значение 3 для поля EventCount. Второй набор возвращает значение 1 для поля event batch ID.

Просмотр данных событий

Чтобы просмотреть добавленные события, используйте запрос ViewWeatherEvents.sql.

Просмотр данных событий

  1. В обозревателе решений откройте файл ViewWeatherEvents.sql.

  2. Проверьте код Transact-SQL.

  3. Нажмите клавишу F5, чтобы выполнить запрос.

Если нужно отправить несколько пакетов событий, соответствующим образом измените параметр EventBatchID.

Просмотр уведомлений

Примерно через 30 секунд в службах Notification Services в папке «Уведомления» должен быть создан файл FileNotifications.htm. Откройте этот файл, чтобы просмотреть данные уведомлений. Должны быть получены три уведомления, имеющие следующий вид.

  • Идентификатор уведомления: 1 Имя класса уведомления: Идентификатор подписчика уведомлений «WeatherNotifications»: stephanie Адрес устройства: stephanie@adventure-works.com Поля протокола: Текст: Отчет о погоде в городе Сиэтл [21/2/2005 14:01:00]: Солнечно
    Ожидаемая температура (нижняя граница): 31 F.
    Ожидаемая температура (верхняя граница): 52 F.
    Дополнительные сведения см. на следующем веб-узле: http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Seattle
    Спасибо за использование служб SQL Server Notification Services.
  • Идентификатор уведомления: 2 Имя класса уведомления: Идентификатор подписчика уведомлений «WeatherNotifications»: Адрес устройства «david»: Поля протокола «david@adventure-works.com»: Текст: Отчет о погоде в городе Орландо [2/22/2005 2:01:00]: Частичная облачность
    Ожидаемая температура (нижняя граница): 59 F.
    Ожидаемая температура (верхняя граница): 81 F.
    Дополнительные сведения см. на следующем веб-узле: http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Orlando
    Спасибо за использование служб SQL Server Notification Services.
  • Идентификатор уведомления: 3 Имя класса уведомления: Идентификатор подписчика уведомлений «WeatherNotifications»: Адрес устройства «richard»: Поля протокола «richard@adventure-works.com»: Текст: Отчет о погоде в городе Сиэтл [2/21/2005 14:01:00]: Солнечно
    Ожидаемая температура (нижняя граница): 31 F.
    Ожидаемая температура (верхняя граница): 52 F.
    Дополнительные сведения см. на следующем веб-узле: http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Seattle
    Спасибо за использование служб SQL Server Notification Services.

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

Кроме того, обратите внимание, что существует заголовок для каждого уведомления. В нем показаны сведения об этом уведомлении, включая идентификатор подписчика и адрес устройства. Фактический текст уведомления начинается после слова «Текст:».

Устранение неполадок

Если файл FileNotifications.htm отсутствует в папке «Уведомления» спустя одну минуту, просмотрите журнал приложения в программе просмотра событий Windows и найдите события служб Notification Services. У соответствующей службы Windows может отсутствовать разрешение на запись в папку «Уведомления».

Можно просмотреть сведения о любых уведомлениях, созданных для класса уведомлений WeatherNotifications, выполнив запрос ViewNotifications.sql.

Просмотр сведений об уведомлениях

  1. В обозревателе решений раскройте элемент Weather, затем раскройте элемент Запросы и дважды щелкните файл ViewNotifications.sql.

  2. Нажмите клавишу F5, чтобы выполнить запрос.

    Сведения о доставке уведомлений находятся в столбце DeliveryStatusDescription. В случае возникновения каких-либо ошибок в журнал «Приложение» будут занесены дополнительные сведения.

  3. Закройте файл ViewSubscribersAndDevices.sql.

Дальнейшая работа

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

См. также

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

Учебник по службам Notification Services

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

Построение решений на основе служб Notification Services
Введение в службы SQL Server Notification Services

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

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