Занятие 11. Передача событий в приложение Weather
В этом шаге будет использоваться сценарий Transact-SQL для передачи событий в приложение Weather, а затем будет выполнен просмотр итоговых уведомлений.
Данные событий
События представляют собой данные, которые используются в приложении уведомлений для создания этих уведомлений. Создаваемые пользователем запросы на формирование уведомлений соединяют данные событий и данные подписки, чтобы создать уведомление, как, например, запрос занятия 5.
Запросы создания уведомлений порождаются в каждом такте генератора при наличии данных для обработки. Правила событий выполняются в каждом такте генератора при поступлении одного или нескольких пакетов событий. Запланированные правила применяются в такте с наличием запланированных подписок для обработки.
Если данные событий отсутствуют, нет оснований выполнять правила. Поэтому уведомления в этом случае не создаются.
События WeatherData
В этом приложении будет передан пакет событий с использованием хранимых процедур отправки событий. Вначале будет выполнена хранимая процедура NSEventBeginBatchWeatherData, чтобы открыть пакет событий. В качестве поставщика событий необходимо указать внепроцессный поставщик событий «WeatherSPEventProvider», определенный на занятии 6.
Внимание! |
---|
Эти инструкции нельзя выполнять по отдельности. Они открывают и закрывают пакет событий и должны выполняться в одной транзакции. Чтобы выполнить эти запросы, запустите сценарий 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
В обозревателе решений раскройте элемент Weather, затем раскройте элемент Запросы и откройте файл AddWeatherEvents.sql.
Проверьте код Transact-SQL.
Нажмите клавишу F5, чтобы выполнить запрос.
Будет получено два результирующих набора. Первый результирующий набор возвращает значение 3 для поля EventCount. Второй набор возвращает значение 1 для поля event batch ID.
Просмотр данных событий
Чтобы просмотреть добавленные события, используйте запрос ViewWeatherEvents.sql.
Просмотр данных событий
В обозревателе решений откройте файл ViewWeatherEvents.sql.
Проверьте код Transact-SQL.
Нажмите клавишу 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.
Просмотр сведений об уведомлениях
В обозревателе решений раскройте элемент Weather, затем раскройте элемент Запросы и дважды щелкните файл ViewNotifications.sql.
Нажмите клавишу F5, чтобы выполнить запрос.
Сведения о доставке уведомлений находятся в столбце DeliveryStatusDescription. В случае возникновения каких-либо ошибок в журнал «Приложение» будут занесены дополнительные сведения.
Закройте файл ViewSubscribersAndDevices.sql.
Дальнейшая работа
В этом учебнике было показано, как создать простой прототип приложения служб Notification Services. Чтобы продолжить изучение служб Notification Services, воспользуйтесь следующими ресурсами:
- Построение решений на основе служб Notification Services
- Образцы служб SQL Server Notification Services
См. также
Основные понятия
Учебник по службам Notification Services
Другие ресурсы
Построение решений на основе служб Notification Services
Введение в службы SQL Server Notification Services