新闻报道示例

更新日期: 2006 年 7 月 17 日

新闻报道示例说明如何创建基于 Web 的简单订阅管理应用程序。该示例有 N 层设计,包含基于 HTML 的接口层和订阅管理中间层。在您运行 Microsoft Visual Studio Web 项目时,它创建一个 Visual Web Developer Web 服务器,这样您就可以更轻松地使用示例。IA64 不支持此示例。

应用场景

Adventure Works Cycles 发布面向客户的新闻报道和主办方宣传活动。使用此应用程序,客户可以订阅接收这些新闻报道和关于宣传活动的通知。

客户使用 Web 页创建针对某类信息的订阅(新闻报道或宣传),并选择传递时间(按事件驱动或按计划)。

在 Adventure Works Cycles 中,包含新闻报道数据和宣传活动数据的文件放在一个被监视的文件夹中。生成器运行时,它运行事件历史记录规则来更新用于计划订阅的历史记录,然后针对未处理的事件批次运行事件驱动规则,针对预定要处理的所有计划订阅运行计划订阅规则。当计划订阅规则运行时,它会更新用来跟踪每个订阅最后一次生成通知的时间的订阅历史记录。此信息用于确保不会有重复的通知。

在以下条件下会生成通知:

  • 事件(新闻报道或宣传)的文档类型与订阅中的文档类型匹配。
  • 新闻报道或事件的类别与订阅中的类别匹配。
  • 如果订阅是计划订阅,计划时间位于上次生成器规则触发和当前生成器规则触发之间的间隔中。
  • 如果订阅是计划订阅,事件提交至数据库的时间晚于订阅最后一次生成通知的时间。

产生的通知使用 XSLT 内容格式化程序进行格式化,然后使用 File 传递协议发送。

语言

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

功能

新闻报道示例使用了 Microsoft SQL Server Notification Services 的下列功能。

应用领域 功能

事件类

事件驱动订阅的基本事件类和计划订阅的事件历史记录。

订阅类

事件驱动的订阅和计划订阅。

通知类

摘要传递。

事件提供程序

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

内容格式化程序

XSLT 内容格式化程序。

传递协议

文件和 SMTP 传递协议。

订阅管理应用程序

使用 Visual Web Developer Web 服务器的 Microsoft ASP.NET。

必备组件

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

  • Microsoft SQL Server 2005,包括下列组件:
    • 数据库引擎。
    • Notification Services。
    • SQL Server Management Studio。
    • Notification Services 示例。这些示例包含在 SQL Server 2005 中。您可以从 SQL Server 开发人员中心网站上下载这些示例的最新版本。
  • Microsoft Visual Studio 2005(附带 Visual Web Designer)

生成示例

若要生成示例,您需要执行以下操作:

  • 创建 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\Newsletter。
    • NotificationServicesHost,该参数为本地服务器的名称。
    • SQLServer,该参数为 SQL Server 实例的名称。
  5. 选中**“创建实例后将其启用”**复选框。

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

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

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

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

  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 完成注册实例后,单击**“关闭”**。

ms160957.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. 授予对 NewsletterInstanceNSMain 数据库的权限:

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

    1. 在**“映射到此登录名的用户”**框中,选择 NewsletterInstanceNewsletter
    2. 在**“数据库角色成员身份: NewsletterInstanceNewsletter”**框中,选择 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. 单击**“确定”**以应用更改。

运行示例

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

  • 启动实例。
  • 使用 Web 应用程序添加订阅方和订阅。
  • 放置包含事件的 XML 文件。

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

步骤 1:启动实例

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

  2. 右键单击 NewsletterInstance 并选择**“启动”**。

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

  1. 打开 Visual Studio 2005。

  2. 在**“文件”菜单上,指向“打开”,再单击“网站”**。

  3. 在**“打开网站”对话框中,定位到新闻报道示例的 SubscriptionManagementWeb\cs\SubscriptionManagementWeb 文件夹并选择“打开”**。

  4. 按 F5 键运行 Web 应用程序。

    使用 Web 页将示例用户的订阅添加至新闻报道应用程序。默认订阅值表示将发送通知。

ms160957.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. 在对象资源管理器中,打开 Notification Services 文件夹。

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

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

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

请参阅

其他资源

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

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 7 月 17 日

更改的内容:
  • 在运行此示例的必备组件中添加了 Visual Web Designer。

2006 年 4 月 14 日

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