航班示例

更新日期: 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 的实例。

  1. 打开 SQL Server Management Studio 并连接到 SQL Server 的实例。

  2. 在对象资源管理器中,右键单击 Notification Services 文件夹,并选择**“新建 Notification Services 实例”**。

  3. 在**“新建 Notification Services 实例”对话框中,单击“浏览”**,并选择航班示例的根文件夹中的 InstanceConfig.xml 文件。

  4. 在**“参数”**框中,输入以下三个参数的值:

    • SampleDirectory:航班示例的根文件夹的路径。默认路径为 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Flight。
    • NotificationServicesHost:Notification Services 服务器的名称
    • SQLServer:SQL Server 实例的名称
  5. 选中**“创建实例后将其启用”**复选框。

  6. 单击**“确定”**。

  7. 在 Notification Services 创建完实例后,单击**“关闭”**。

步骤 2:注册 Notification Services 的实例。

  1. 在 SQL Server Management Studio 中,打开 Notification Services 节点,右键单击 FlightInstance,指向**“任务”,再选择“注册”**。

  2. 在**“注册”对话框中,选中“创建 Windows 服务”**复选框。Windows 服务将在此计算机上运行 Notification Services 的实例。

  3. 在**“服务登录”**下,输入 Windows 登录帐户和密码。这是运行服务所使用的 Windows 帐户。如果使用 Windows 身份验证访问 SQL Server,则 Windows 服务还将使用此帐户连接到 SQL Server。

  4. 如果必须使用 SQL Server 身份验证访问 SQL Server,请选择**“身份验证”下面的“SQL Server 身份验证”**,然后输入 SQL Server 登录名和密码。

    建议您使用 Windows 身份验证。

  5. 单击**“确定”**。

  6. Notification Services 完成注册实例后,单击**“关闭”**。

ms160946.note(zh-cn,SQL.90).gif注意:
如果要使用数据库所有者或系统管理员帐户部署 Notification Services 示例,则无需将 SQL Server 权限授予该帐户。授予这些权限可能会导致错误,当然您可以忽略此错误。部署自己的应用程序时,应使用特权较低的帐户,以提高安全性。

步骤 3:授予 SQL Server、数据库和文件夹权限

  1. 在对象资源管理器中,展开**“安全性”**节点。

  2. 如果必须为 Windows 服务创建新的数据库登录帐户,请右键单击**“登录名”并选择“新建登录名”**,然后创建登录帐户:

    • 若要使用 Windows 身份验证,请选择**“Windows 身份验证”**,然后输入在注册实例时指定的相同 Windows 帐户。
    • 如果必须使用 SQL Server 身份验证,请选择**“SQL Server 身份验证”**,然后输入在注册实例时指定的相同 SQL Server 登录名和密码。
  3. 如果 Windows 服务所使用的登录名已具有对 SQL Server 的访问权限,则用右键单击该登录名并选择**“属性”**。

  4. 在**“登录”对话框的左窗格中,选择“用户映射”**。

  5. 授予对 FlightInstanceNSMain 数据库的权限:

    1. 在**“映射到此登录名的用户”**框中,选择 FlightInstanceNSMain
    2. 在**“数据库角色成员身份: FlightInstanceNSMain”**框中,选择 NSRunService
  6. 授予对 FlightInstanceFlight 数据库的权限:

    1. 在**“映射到此登录名的用户”**框中,选择 FlightInstanceFlight
    2. 在**“数据库角色成员身份: FlightInstanceFlight”**框中,选择 NSRunService
  7. 单击**“确定”**以应用 SQL Server 权限。

  8. 使用 Windows 资源管理器,配置 Events 文件夹的安全性:

    1. 找到示例的 Events 文件夹。
    2. 右键单击 Events 文件夹,选择**“共享和安全”,再选择“安全”**选项卡。
    3. 单击**“添加”**,然后添加 Windows 服务所使用的帐户。
    4. 在**“组或用户名”**框中,选择刚才添加的帐户。
    5. 在**“权限”框中,选择“读取”“修改”**权限。
    6. 单击**“确定”**以应用更改。
  9. 配置 Notifications 文件夹的安全性:

    1. 找到示例的 Notifications 文件夹。
    2. 右键单击 Notifications 文件夹,选择**“共享和安全”,再选择“安全”**选项卡。
    3. 单击**“添加”**,然后添加 Windows 服务所使用的帐户。
    4. 在**“组或用户名”**框中,选择刚才添加的帐户。
    5. 在**“权限”框中,选择“写”**。
    6. 单击**“确定”**以应用更改。

生成强名称密钥文件

如果尚未创建强名称密钥文件,则请使用以下说明生成该密钥文件。

生成强名称密钥文件

  1. 打开 Microsoft Visual Studio 2005 命令提示符。单击“开始”,依次指向“所有程序”、“Microsoft .NET Framework SDK 2.0”,然后单击“SDK 命令提示符”

    - 或 -

    打开 Microsoft .NET Framework 命令提示符。单击“开始”,依次指向“所有程序”、“Microsoft .NET Framework SDK 2.0”,然后单击“SDK 命令提示符”

  2. 使用更改目录命令 (CD) 将命令提示符窗口的当前目录更改至安装示例的文件夹。

    ms160946.note(zh-cn,SQL.90).gif注意:
    若要确定示例所在的文件夹,请单击“开始”按钮,依次指向“所有程序”、“Microsoft SQL Server”、“文档和教程”,然后单击“示例目录”。如果使用了默认安装位置,则示例将位于 <system_drive>:\Program Files\Microsoft SQL Server\100\Samples 中。
  3. 在命令提示符下,运行以下命令以生成密钥文件:

    sn -k SampleKey.snk

    ms160946.note(zh-cn,SQL.90).gif重要事项:
    有关强名称密钥对的详细信息,请参阅 MSDN 上 .NET 开发中心中的“安全简讯:.NET Framework 中的强名称和安全性”。

运行示例

若要运行示例,您必须执行以下操作:

  • 启动实例。
  • 添加订阅方和订阅。
  • 放置包含事件的 XML 文件。
  • 查看生成的通知。

以下过程显示如何执行这些任务,以及如何查看生成的通知。

步骤 1:启动实例

  1. 在对象资源管理器中,打开 Notification Services 文件夹。

  2. 右键单击 FlightInstance,再选择**“启动”**。

步骤 2:添加订阅方和订阅

  1. 生成 Flight 或 Flight_VB Visual Studio 解决方案

    如果使用的是 Microsoft .NET Framework SDK,请执行以下操作:

    1. 单击**“开始”,依次指向“所有程序”Microsoft .NET Framework SDK v2.0,再单击“SDK 命令提示”**。
    2. 找到航班示例的根文件夹。对于默认位置,请键入以下命令:
      cd \Program Files\Microsoft SQL Server\90\Samples\Notification Services\Flight
    3. 键入以下内容生成 Visual Studio 解决方案。
      [C#]
      msbuild Flight.sln
      [Visual Basic]
      msbuild Flight_VB.sln

    或者,如果使用的是 Visual Studio 2005,请执行以下操作:

    1. 打开选择的解决方案文件(Flight.sln 或 Flight_VB.sln)。
    2. 生成解决方案。
  2. 运行 AddSubscribers.exe。

    此文件的默认位置为 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Flight\AddSubscribers\language\AddSubscribers\bin\Debug。

  3. 运行 AddSubscriptions.exe。

    C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Flight\AddSubscriptions\language\AddSubscriptions\bin\Debug。

ms160946.note(zh-cn,SQL.90).gif注意:
对于生产应用程序,或者如果您正在受限帐户下运行此应用程序,请将应用程序的 SQL Server 登录名添加到实例和应用程序数据库中的 NSSubscriberAdmin 数据库角色。

步骤 3:提交事件

  1. 在 Windows 资源管理器中,找到航班示例的根文件夹,然后将 EventData.xml 文件复制到 Events 子文件夹中。

    当您放置了文件后,文件系统观察器事件提供程序将从文件中读取数据,将其提交给应用程序,然后将文件扩展名更改为 .done。

    如果在读取或提交数据时发生错误,则事件提供程序将把文件扩展名更改为 .err。请在 Windows 事件查看器中查看错误的其他详细信息。

步骤 4:查看通知

  1. 给 Notification Services 大约 1 分钟的时间来生成通知。

  2. 使用 Windows 资源管理器,找到航班示例的 Notifications 文件夹。您可以找到一个名为 FileNotifications.txt 的文件。此文件包含基于文件的通知。

  3. 导航到放置电子邮件的文件夹。通常位于 C:\Inetpub\mailroot 下的一个文件夹中。根据 SMTP 服务器状态,通知应该在 Pickup 文件夹或 Queue 文件夹中。如果运行了 SMTP 服务,则邮件将移动到 Badmail 文件夹中。

删除示例

使用以下步骤删除航班示例。

删除航班示例

  1. 在 SQL Server Management Studio 对象资源管理器中,打开 Notification Services 文件夹。

  2. 右键单击 FlightInstance,再选择**“停止”**。

  3. 右键单击 FlightInstance,指向**“任务”,再选择“撤消注册”**。

  4. 右键单击 FlightInstance,指向**“任务”,再选择“删除”**。

请参阅

其他资源

SQL Server Notification Services 示例
保护 Notification Services 的安全

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 4 月 14 日

已添加的内容:
  • 添加了关于使用数据库所有者权限运行示例的注释。

2005 年 12 月 5 日

更改的内容:
  • 更改了有关生成密钥文件的说明,包括密钥文件的名称和位置。