第 11 课:向 Weather 应用程序提交事件
在本步骤中,将使用一个 Transact-SQL 脚本向 Weather 应用程序提交事件,然后查看结果通知。
事件数据
事件是通知应用程序用于生成通知的数据。您编写的通知生成查询将事件数据和订阅数据联接起来以生成通知,如第 5 课中的查询。
在每个有数据要处理的生成器量程期间,将激发生成通知的查询。事件规则将在一个或多个事件批次所到达的任一量程中运行。预定规则将在具有要处理的预定订阅的任一量程中运行。
如果没有事件数据,则不会运行任何规则。因此也就不会生成通知。
WeatherDate 事件
对于此应用程序,将使用事件提交存储过程提交一批事件。首先,将使用 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 存储过程添加三个天气事件。必须提供事件批次 ID,然后提供事件字段的值。以下是一个示例事件:
-- 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;
可以显示事件批次 ID,以便使用视图和存储过程来查看有关批事件的信息。
-- Display event batch ID
SELECT @BatchID 'Event Batch';
向 Weather 应用程序提交事件
使用 AddWeatherEvents.sql 查询向 Weather 应用程序添加事件。
向 Weather 应用程序提交事件
在解决方案资源管理器中,展开 Weather,再展开**“查询”**,然后打开 AddWeatherEvents.sql。
检查 Transact-SQL 代码。
按 F5 运行查询。
应该接收到两个结果集。第一个结果集返回一个 EventCount 值 3。第二个结果集返回一个事件批次 ID 1。
查看事件数据
使用 ViewWeatherEvents.sql 查询查看刚添加的事件。
查看事件数据
在解决方案资源管理器中,打开 ViewWeatherEvents.sql。
检查 Transact-SQL 代码。
按 F5 运行查询。
如果提交了多个事件批次,请对 EventBatchId 参数进行相应的更改。
查看通知
大约 30 秒后,Notification Services 应在“通知”文件夹中创建了一个 FileNotifications.htm 文件。打开此文件即可查看通知数据。您应收到三个具有以下类似内容的通知:
- 通知 ID:1 通知类名称:WeatherNotifications 订阅方 ID:stephanie 设备地址:stephanie@adventure-works.com 协议字段:正文:Weather report for the city of Seattle [2/21/2005 2:01:00 PM]: Sunny
预计最低温度:31 F。
预计最高温度:52 F。
有关详细信息,请访问我们的网站 http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Seattle
感谢您使用 SQL Server Notification Services。 - 通知 ID:2 通知类名称:WeatherNotifications 订阅方 ID:david 设备地址:david@adventure-works.com 协议字段:正文:Weather report for the city of Orlando [2/22/2005 2:01:00 AM]: Partly Cloudy
预计最低温度:59 F。
预计最高温度:81 F。
有关详细信息,请访问我们的网站 http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Orlando
感谢您使用 SQL Server Notification Services。 - 通知 ID:3 通知类名称:WeatherNotifications 订阅方 ID:richard 设备地址:richard@adventure-works.com 协议字段:正文:Weather report for the city of Seattle [2/21/2005 2:01:00 PM]: Sunny
预计最低温度:31 F。
预计最高温度:52 F。
有关详细信息,请访问我们的网站 http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Seattle
感谢您使用 SQL Server Notification Services。
由于使用的是内置文件传递协议,因此事件生成的三个通知都在一个文件内。如果提交更多事件,增加的通知将追加到此文件中。
另注意,每个通知都有一个标题。此标题可以显示有关通知的信息,其中包括订阅方 ID 和设备地址。通知的实际文本从“正文:”之后开始。
故障排除
如果一分钟后还没有在“通知”文件夹中看到 FileNotifications.htm 文件,请在 Windoes 事件查看器中查看有关 Notification Services 事件的应用程序日志。Windows 服务可能没有通知文件夹的写入权限。
也可以通过运行 ViewNotifications.sql 查询,查看为 WeatherNotifications 通知类生成的任何通知的有关信息。
查看通知信息
在解决方案资源管理器中,展开 Weather,再展开**“查询”**,然后双击 ViewNotifications.sql。
按 F5 运行查询。
在 DeliveryStatusDescription 列中查看有关通知传递的信息。如果存在失败的情况,则在应用程序日志中应有其他信息。
关闭 ViewSubscribersAndDevices.sql。
下一步做什么?
本教程已经向您展示了如何为 Notification Services 应用程序生成一个简单原型。若要继续学习 Notification Services,请使用以下资源:
请参阅
概念
其他资源
生成通知解决方案
SQL Server Notification Services 简介