FlightNmo 示例

更新日期: 2006 年 7 月 17 日

FlightNmo 示例显示如何使用 Notification Services 管理对象 (NMO) 生成 Flight 示例应用程序。

应用场景

旅客订阅航班价格通知。在每个订阅中,他们要说明始发地和目的地,目标价格以及航线(可选)。

运行 FlightNmo 应用程序的公司通过将 XML 数据拖放到所监视的文件夹中,向应用程序提交航班价格事件数据。随后 Notification Services 拾取此数据并为订阅方生成符合订阅要求的通知。

如果下列条件为 True,则生成通知:

  • 事件票价低于订阅票价。
  • 事件始发机场等于订阅始发机场。
  • 事件目的机场等于订阅目的机场。
  • 事件航线等于订阅航线(如果指定)。

如果同一时间要向一个订阅方发送多个通知,则 Notification Services 将使用摘要传递把多个通知组合起来。然后,Notification Services 使用 XSLT 内容格式化程序设置通知的格式,并使用专用的传递通道(电子邮件或文件)来分发通知。

语言

XML、XSD、XSLT 和 Microsoft Visual C# 或 Microsoft Visual Basic。

功能

FlightNmo 示例使用 Notification Services 的以下功能:

应用领域 功能

事件类

基本事件队列(无历史记录)。

订阅类

事件驱动订阅。

通知类

摘要传递。

事件提供程序

文件系统观察器事件提供程序。

内容格式化程序

XSLT 内容格式化程序。

传递协议

文件和 SMTP 传递协议。

实例和应用程序开发

NMO

必备组件

在运行此示例之前,请确保安装了下列软件:

  • 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

确保正确安装了以下 Windows 组件:

  • 简单邮件传输协议 (SMTP) 服务,该服务是 Internet 信息服务 (IIS) 的一个组件。在 Microsoft Windows Server 2003 中,默认情况下,SMTP 不与 IIS 一起安装。有关如何安装和使用 SMTP 服务的说明,请参阅 Windows 文档。

还应确保已启动将要使用的数据库引擎实例。

生成强名称密钥文件

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

生成强名称密钥文件

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

    - 或 -

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

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

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

    sn -k SampleKey.snk

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

生成 Notification Services 实例

若要生成实例,必须执行以下操作:

  • 创建并注册 Notification Services 实例。
  • 授予 SQL Server、数据库和文件夹权限。

以下过程显示了如何执行 FlightNmo 示例的每一项任务。

步骤 1:生成 Visual Studio 解决方案

  1. 首先,生成 Visual Studio 解决方案。

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

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

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

    1. 打开选择的解决方案文件(FlightNmo.sln 或 FlightNmo_VB.sln)。
    2. 从 Visual Studio 的**“生成”** 菜单中,选择**“生成解决方案”**。

步骤 2:创建并注册 Notification Services 实例

  1. 在命令提示符下,转到 CreateFlightNmoInstance Debug 文件夹。

    cd CreateFlightNmoInstance\language\CreateFlightNmoInstance\bin\Debug

  2. 按如下所示运行 CreateFlightNmoInstance.exe,以创建、注册和启用实例。仅当使用 SQL Server 身份验证时才需要 SqlUserNameSqlPassword 参数。需要所有其他参数:

    **CreateFlightNmoInstance SqlServer=databaseServerSampleDirectory=**directory

    **NotificationServicesHost=**NotificationServicesHost

    **ServiceUserName=NSServiceUserNameServicePassword=**NSServicePwd

    **SqlUserName=NSServiceSqlUserNameSqlPassword=**NSServiceSqlPwd

    当运行此命令时,将以下值用于本主题前面提到的占位符:

    • databaseServer 是要在其上创建实例和应用程序数据库的数据库引擎实例。
    • directory 是示例目录。默认位置是 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo。
    • NotificationServicesHost 是运行 Notification Services 引擎组件的服务器。对于此示例,应该使用本地计算机。
    • NSServiceUserName 是将要运行 NS$FlightNmoInstance Windows 服务的帐户。
    • NSServicePwdNSServiceUserName 帐户的密码。
    • 仅当使用 SQL Server 身份验证时,才使用 SQL Server 身份验证参数:NSServiceSqlUserNameNSServiceSqlPwd。如果提供了这些参数,Windows 服务将使用它们连接到数据库引擎。

    当完成了此命令时,您将有两个新的数据库和一个 Windows 服务。数据库以 FlightNmoInstanceNSMainFlightNmoInstanceFlightNmo 命名。Windows 服务以 NS$FlightNmoInstance 命名。

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

步骤 3:授予 SQL Server 和数据库权限

  1. 打开 SQL Server Management Studio 并连接到本主题前面的 SqlServer 参数中指定的数据库引擎实例。

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

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

    • 若要使用 Windows 身份验证,选择**“Windows 身份验证”**,并输入本主题前面的 SqlServer 参数中指定的 Windows 帐户。
    • 若要使用 SQL Server 身份验证,选择**“SQL Server 身份验证”**,然后输入为本主题前面的 SqlUserNameSqlPassword 参数指定的值。
  4. 如果 Windows 服务所使用的登录名已具有对 SQL Server 的访问权限,则用右键单击该登录名并选择**“属性”**。

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

  6. 授予对 FlightNmoInstanceNSMain 数据库的权限:

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

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

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

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

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

运行示例

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

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

以下过程显示如何执行这些任务。

步骤 1:启动实例

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

  2. 右键单击 FlightNmoInstance,然后选择**“启动”**。

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

  1. 运行 AddSubscribers.exe。

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

  2. 运行 AddSubscriptions.exe。

    此文件夹的默认位置是 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscriptions\language\AddSubscriptions\bin\Debug。

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

步骤 3:提交事件

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

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

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

步骤 4:查看通知

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

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

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

删除示例

按照以下步骤删除 FlightNmo 示例。

删除 FlightNmo 示例

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

  2. 右键单击 FlightNmoInstance,然后选择**“停止”**。

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

  4. 右键单击 FlightNmoInstance,指向**“任务”,然后选择“删除”**。

请参阅

其他资源

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

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 4 月 14 日

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

2005 年 12 月 5 日

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