航班示例
更新日期: 2006 年 7 月 17 日
该航班示例是事件驱动的 Microsoft SQL Server 2005 Notification Services 应用程序,可根据用户的订阅为订阅用户生成关于航班价格的通知。
应用场景
旅客订阅航班价格通知。在每个订阅中,他们要说明始发地和目的地,目标价格以及航线(可选)。
运行航班应用程序的公司通过将 XML 数据放到观察文件夹中来把航班价格事件数据提交到应用程序。随后 Notification Services 拾取此数据并为订阅方生成符合订阅要求的通知。
如果下列条件为 True,则生成通知:
- 事件票价低于订阅票价。
- 事件始发机场等于订阅始发机场。
- 事件目的机场等于订阅目的机场。
- 事件航线等于订阅航线(如果指定)。
如果有多个通知要在同一时间发送给某个订阅方,则 Notification Services 将使用摘要传递把多个通知组合起来。然后,Notification Services 使用 XSLT 内容格式化程序设置通知的格式,并使用指定的传递通道(电子邮件或文件)分发该通知。
语言
XML、XSD、XSLT 和 Microsoft Visual C# 或 Microsoft Visual Basic。
功能
航班示例使用 Notification Services 的以下功能:
应用领域 | 功能 |
---|---|
事件类 |
基本事件队列(无历史记录)。 |
订阅类 |
事件驱动订阅。 |
通知类 |
摘要传递。 |
事件提供程序 |
文件系统观察器事件提供程序。 |
内容格式化程序 |
XSLT 内容格式化程序。 |
传递协议 |
文件和 SMTP 传递协议。 |
必备组件
在运行此示例之前,请确保安装了下列软件:
- SQL Server 2005,包括下列组件:
- 数据库引擎
- Notification Services
- SQL Server Management Studio
- Notification Services 示例。这些示例包含在 SQL Server 2005 中。您可以从 SQL Server 开发人员中心网站上下载这些示例的最新版本。
- .NET Framework SDK 2.0 或 Microsoft Visual Studio 2005。您可以免费获取 .NET Framework SDK。请参阅安装 .NET Framework SDK。
同时确保正确安装了以下 Microsoft Windows 组件:
- 简单邮件传输协议 (SMTP) 服务,该服务是 Internet 信息服务 (IIS) 的一个组件。在 Microsoft Windows Server 2003 中,默认情况下,SMTP 不与 IIS 一起安装。有关如何安装和使用 SMTP 服务的说明,请参阅 Windows 文档。
生成 Notification Services 实例
若要生成实例,必须执行以下操作:
- 创建 Notification Services 的实例。
- 注册 Notification Services 实例。
- 授予 SQL Server、数据库和文件夹权限。
以下过程显示了如何执行航班示例的每一项任务。
步骤 1:创建 Notification Services 的实例。
打开 SQL Server Management Studio 并连接到 SQL Server 的实例。
在对象资源管理器中,右键单击 Notification Services 文件夹,并选择**“新建 Notification Services 实例”**。
在**“新建 Notification Services 实例”对话框中,单击“浏览”**,并选择航班示例的根文件夹中的 InstanceConfig.xml 文件。
在**“参数”**框中,输入以下三个参数的值:
- SampleDirectory:航班示例的根文件夹的路径。默认路径为 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Flight。
- NotificationServicesHost:Notification Services 服务器的名称
- SQLServer:SQL Server 实例的名称
选中**“创建实例后将其启用”**复选框。
单击**“确定”**。
在 Notification Services 创建完实例后,单击**“关闭”**。
步骤 2:注册 Notification Services 的实例。
在 SQL Server Management Studio 中,打开 Notification Services 节点,右键单击 FlightInstance,指向**“任务”,再选择“注册”**。
在**“注册”对话框中,选中“创建 Windows 服务”**复选框。Windows 服务将在此计算机上运行 Notification Services 的实例。
在**“服务登录”**下,输入 Windows 登录帐户和密码。这是运行服务所使用的 Windows 帐户。如果使用 Windows 身份验证访问 SQL Server,则 Windows 服务还将使用此帐户连接到 SQL Server。
如果必须使用 SQL Server 身份验证访问 SQL Server,请选择**“身份验证”下面的“SQL Server 身份验证”**,然后输入 SQL Server 登录名和密码。
建议您使用 Windows 身份验证。
单击**“确定”**。
Notification Services 完成注册实例后,单击**“关闭”**。
注意: |
---|
如果要使用数据库所有者或系统管理员帐户部署 Notification Services 示例,则无需将 SQL Server 权限授予该帐户。授予这些权限可能会导致错误,当然您可以忽略此错误。部署自己的应用程序时,应使用特权较低的帐户,以提高安全性。 |
步骤 3:授予 SQL Server、数据库和文件夹权限
在对象资源管理器中,展开**“安全性”**节点。
如果必须为 Windows 服务创建新的数据库登录帐户,请右键单击**“登录名”并选择“新建登录名”**,然后创建登录帐户:
- 若要使用 Windows 身份验证,请选择**“Windows 身份验证”**,然后输入在注册实例时指定的相同 Windows 帐户。
- 如果必须使用 SQL Server 身份验证,请选择**“SQL Server 身份验证”**,然后输入在注册实例时指定的相同 SQL Server 登录名和密码。
如果 Windows 服务所使用的登录名已具有对 SQL Server 的访问权限,则用右键单击该登录名并选择**“属性”**。
在**“登录”对话框的左窗格中,选择“用户映射”**。
授予对 FlightInstanceNSMain 数据库的权限:
- 在**“映射到此登录名的用户”**框中,选择 FlightInstanceNSMain。
- 在**“数据库角色成员身份: FlightInstanceNSMain”**框中,选择 NSRunService。
授予对 FlightInstanceFlight 数据库的权限:
- 在**“映射到此登录名的用户”**框中,选择 FlightInstanceFlight。
- 在**“数据库角色成员身份: FlightInstanceFlight”**框中,选择 NSRunService。
单击**“确定”**以应用 SQL Server 权限。
使用 Windows 资源管理器,配置 Events 文件夹的安全性:
- 找到示例的 Events 文件夹。
- 右键单击 Events 文件夹,选择**“共享和安全”,再选择“安全”**选项卡。
- 单击**“添加”**,然后添加 Windows 服务所使用的帐户。
- 在**“组或用户名”**框中,选择刚才添加的帐户。
- 在**“权限”框中,选择“读取”和“修改”**权限。
- 单击**“确定”**以应用更改。
配置 Notifications 文件夹的安全性:
- 找到示例的 Notifications 文件夹。
- 右键单击 Notifications 文件夹,选择**“共享和安全”,再选择“安全”**选项卡。
- 单击**“添加”**,然后添加 Windows 服务所使用的帐户。
- 在**“组或用户名”**框中,选择刚才添加的帐户。
- 在**“权限”框中,选择“写”**。
- 单击**“确定”**以应用更改。
生成强名称密钥文件
如果尚未创建强名称密钥文件,则请使用以下说明生成该密钥文件。
生成强名称密钥文件
打开 Microsoft Visual Studio 2005 命令提示符。单击“开始”,依次指向“所有程序”、“Microsoft .NET Framework SDK 2.0”,然后单击“SDK 命令提示符”。
- 或 -
打开 Microsoft .NET Framework 命令提示符。单击“开始”,依次指向“所有程序”、“Microsoft .NET Framework SDK 2.0”,然后单击“SDK 命令提示符”。
使用更改目录命令 (CD) 将命令提示符窗口的当前目录更改至安装示例的文件夹。
注意: 若要确定示例所在的文件夹,请单击“开始”按钮,依次指向“所有程序”、“Microsoft SQL Server”、“文档和教程”,然后单击“示例目录”。如果使用了默认安装位置,则示例将位于 <system_drive>:\Program Files\Microsoft SQL Server\100\Samples 中。 在命令提示符下,运行以下命令以生成密钥文件:
sn -k SampleKey.snk
重要事项: 有关强名称密钥对的详细信息,请参阅 MSDN 上 .NET 开发中心中的“安全简讯:.NET Framework 中的强名称和安全性”。
运行示例
若要运行示例,您必须执行以下操作:
- 启动实例。
- 添加订阅方和订阅。
- 放置包含事件的 XML 文件。
- 查看生成的通知。
以下过程显示如何执行这些任务,以及如何查看生成的通知。
步骤 1:启动实例
在对象资源管理器中,打开 Notification Services 文件夹。
右键单击 FlightInstance,再选择**“启动”**。
步骤 2:添加订阅方和订阅
生成 Flight 或 Flight_VB Visual Studio 解决方案
如果使用的是 Microsoft .NET Framework SDK,请执行以下操作:
- 单击**“开始”,依次指向“所有程序”、Microsoft .NET Framework SDK v2.0,再单击“SDK 命令提示”**。
- 找到航班示例的根文件夹。对于默认位置,请键入以下命令:
cd \Program Files\Microsoft SQL Server\90\Samples\Notification Services\Flight - 键入以下内容生成 Visual Studio 解决方案。
[C#]
msbuild Flight.sln
[Visual Basic]
msbuild Flight_VB.sln
或者,如果使用的是 Visual Studio 2005,请执行以下操作:
- 打开选择的解决方案文件(Flight.sln 或 Flight_VB.sln)。
- 生成解决方案。
运行 AddSubscribers.exe。
此文件的默认位置为 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Flight\AddSubscribers\language\AddSubscribers\bin\Debug。
运行 AddSubscriptions.exe。
C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Flight\AddSubscriptions\language\AddSubscriptions\bin\Debug。
注意: |
---|
对于生产应用程序,或者如果您正在受限帐户下运行此应用程序,请将应用程序的 SQL Server 登录名添加到实例和应用程序数据库中的 NSSubscriberAdmin 数据库角色。 |
步骤 3:提交事件
在 Windows 资源管理器中,找到航班示例的根文件夹,然后将 EventData.xml 文件复制到 Events 子文件夹中。
当您放置了文件后,文件系统观察器事件提供程序将从文件中读取数据,将其提交给应用程序,然后将文件扩展名更改为 .done。
如果在读取或提交数据时发生错误,则事件提供程序将把文件扩展名更改为 .err。请在 Windows 事件查看器中查看错误的其他详细信息。
步骤 4:查看通知
给 Notification Services 大约 1 分钟的时间来生成通知。
使用 Windows 资源管理器,找到航班示例的 Notifications 文件夹。您可以找到一个名为 FileNotifications.txt 的文件。此文件包含基于文件的通知。
导航到放置电子邮件的文件夹。通常位于 C:\Inetpub\mailroot 下的一个文件夹中。根据 SMTP 服务器状态,通知应该在 Pickup 文件夹或 Queue 文件夹中。如果运行了 SMTP 服务,则邮件将移动到 Badmail 文件夹中。
删除示例
使用以下步骤删除航班示例。
删除航班示例
在 SQL Server Management Studio 对象资源管理器中,打开 Notification Services 文件夹。
右键单击 FlightInstance,再选择**“停止”**。
右键单击 FlightInstance,指向**“任务”,再选择“撤消注册”**。
右键单击 FlightInstance,指向**“任务”,再选择“删除”**。
请参阅
其他资源
SQL Server Notification Services 示例
保护 Notification Services 的安全
帮助和信息
更改历史记录
发布日期 | 历史记录 |
---|---|
2006 年 4 月 14 日 |
|
2005 年 12 月 5 日 |
|