利润率示例

更新日期: 2006 年 7 月 17 日

利润率示例是事件驱动的 Microsoft SQL Server Notification Services 应用程序,它为各个雇员生成有关利润率的通知,并将此数据发送给订阅用户。此示例使用 SSAS 事件提供程序来查询 SSAS 数据库,并将结果作为事件返回到 Notification Services 应用程序中。

ms160923.note(zh-cn,SQL.90).gif注意:
因为未安装 Business Intelligence Development Studio,所以您不能在基于 Itanium 的服务器上运行此示例。

应用场景

公司拥有用于分析销售业绩的 SSAS 数据库。当任何分销商超过他们的利润率目标时,销售部门的雇员均可以订阅利润率应用程序来接收通知。

SSAS 事件提供程序将按应用程序中指定的计划运行 MDX 查询来收集事件。运行生成器时,这些事件被添加到历史记录。然后,在满足以下条件时,该生成器从事件历史记录中生成通知:

  • 订阅方姓名与事件中的雇员姓名匹配。
  • 分销商的毛利润率大于分销商的毛利润率目标。

使用 XSL 转换格式化产生的通知,然后将其发送到文件中。

语言

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

功能

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

应用领域 功能

事件类

基本事件队列和一个历史记录。

订阅类

一个事件驱动的订阅类。

通知类

一个通知类;没有摘要传递或多播传递。

事件提供程序

两个 SSAS 事件提供程序:一个为静态,一个为动态。

内容格式化程序

XSLT 内容格式化程序。

传递协议

文件和 SMTP 传递协议。

必备组件

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

  • Microsoft SQL Server 2005,包括下列组件:
    • 数据库引擎.
    • Notification Services.
    • SSAS.
    • SQL Server Management Studio.
    • Business Intelligence Development Studio。
    • AdventureWorksDW 数据库。SQL Server 2005 附带此数据库,此数据库还可以从 SQL Server 开发人员中心网站上获取。有关详细信息,请参阅运行安装程序安装 AdventureWorks 示例数据库和示例
    • Notification Services 示例。这些示例包含在 SQL Server 2005 中。您可以从 SQL Server 开发人员中心网站上下载这些示例的最新版本。
    • .NET Framework SDK 2.0 或 Microsoft Visual Studio 2005。您可以免费获取 .NET Framework SDK。请参阅安装 .NET Framework SDK

生成示例

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

  • 部署 SSAS 数据库。
  • 创建 Notification Services 实例。
  • 注册 Notification Services 实例。
  • 授予 SQL Server 和数据库权限。

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

步骤 1:部署 Adventure Works DW OLAP 数据库

  1. 打开 SQL Server Business Intelligence Development Studio,单击**“文件”,指向“打开”,然后单击“项目/解决方案”**。

  2. 浏览到 C:\Program Files\Microsoft SQL Server\90\Tools\Samples\AdventureWorks Analysis Services Project,选择 Adventure Works DW.dwproj 文件,然后单击**“打开”**。

  3. 解决方案资源管理器中,右键单击 Adventure Works DW 并选择**“部署”**。

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

  6. 单击“确定”。.

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 授予对 Adventure Works DW 数据库的权限:

    1. 在 SQL Server Management Studio 中,连接到 SSAS。
    2. 展开 SSAS Database 文件夹,然后展开 Adventure Works DW
    3. 右键单击**“角色”并选择“新建角色”**。
    4. 在**“角色名称”**框中,输入 ProfitMarginNS
    5. 在左窗格中,单击**“成员身份”**并添加用来运行此示例的 Notification Services Windows 服务的帐户。
    6. 在左窗格中,选择**“多维数据集”**。
    7. 对于 AdventureWorks 多维数据集,单击**“访问”字段并选择“读取”**。
    8. 单击**“确定”**应用多维数据集权限。
  9. 配置 Events 文件夹的安全性:

    1. 在 Windows 资源管理器中,找到利润率示例的 Events 文件夹。
    2. 右键单击 Events 文件夹,选择**“共享和安全”,再选择“安全”**选项卡。
    3. 单击**“添加”**,然后添加 Windows 服务所使用的帐户。
    4. 在**“组或用户名”**框中,选择刚才添加的帐户。
    5. 在**“权限”框中,选择“读取”“修改”**权限。
    6. 单击**“确定”**以应用更改。
  10. 配置 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) 将命令提示符窗口的当前目录更改至安装示例的文件夹。

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

    sn -k SampleKey.snk

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

运行示例

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

  • 启动实例。
  • 添加订阅方和订阅。
  • 在 SSAS 数据仓库中添加事件。

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

步骤 1:启动实例

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

  2. 右键单击 ProfitMarginInstance,然后单击**“启动”**。

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

  1. 生成 ProfitMargin 或 ProfitMargin_VB Visual Studio 解决方案

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

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

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

    1. 打开选择的解决方案文件(ProfitMargin.sln 或 ProfitMargin_VB.sln)。
    2. 按 F6 以生成解决方案。
  2. 运行 AddSubscribers.exe。

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

  3. 运行 AddSubscriptions.exe。

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

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

步骤 3:向 Analysis Services 数据仓库添加事件

  1. 在 SQL Server Management Studio 中打开**“新建 SQL Server 查询”**窗口。

  2. 打开 ProfitMargin/SQL Scripts 文件夹中的 TriggerEvent.sql 文件,以便向 AdventureWorks 数据仓库添加数据。此数据将生成事件。

    ms160923.note(zh-cn,SQL.90).gif注意:
    如果再次运行此脚本,必须通过更改 SELECT @SalesOrderNumber 字符值来更改 SalesOrderNumber,以添加新的销售订单。
  3. 重新处理多维数据集:

    1. 在 SQL Server Management Studio 对象资源管理器中,单击**“连接”,然后选择“分析服务器”**。
    2. 在**“连接到服务器”对话框中,在“服务器名称”框中键入承载 AdventureWorksDW 多维数据集的服务器名称,然后单击“连接”**。
    3. 在对象资源管理器中,依次打开**“分析服务器”**节点和 Databases 文件夹,然后找到 Adventure Works DW/Cubes/Adventure Works/Measure Groups/Reseller Sales。
    4. 右键单击**“分销商销售”,然后选择“处理”**。
    5. 单击**“确定”**重新处理分销商销售多维数据集。

步骤 4:查看通知

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

  2. 在 Windows 资源管理器中,找到利润率示例的 Notifications 文件夹。您可以找到一个名为 FileNotifications.txt 的文件。该文件包含通知。

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

删除示例

使用以下过程删除利润率示例。

删除 ProfitMargin 示例

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

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

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

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

请参阅

其他资源

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

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 4 月 14 日

已添加的内容:
  • 添加了关于使用数据库所有者权限运行示例的注释。
  • 添加了未在基于 Itanium 的服务器上安装 Business Intelligence Development Studio 的注释。

2005 年 12 月 5 日

更改的内容:
  • 更改了有关生成密钥文件的说明,包括密钥文件的名称和位置。
  • 添加了有关授予对 AdventureWorks DW 多维数据集的权限的说明。
  • 更新了有关部署多维数据集的说明。