协同工作:SharePoint 2010 中集成 SQL Server 2008 R2 Reporting Services

Alan Le Marquand

SQL Server 和 SharePoint 一直以来都能够良好地协作运行。随着 SharePoint Server 2010 和 SQL Server 2008 R2 的发布,SharePoint 和 SQL Server 2008 R2 Reporting Services (SSRS) 之间的集成得到了极大的改进。下面,我们将介绍如何配置和使用最新的增强功能。

服务器集成体系结构

SharePoint 的 Reporting Services 外接程序真正驱动了两个服务器之间的集成。您可将该外接程序安装在需要与报表服务器集成的所有 SharePoint 2010 Web Front End (WFE) 服务器上,该外接程序可从 Microsoft 下载中心免费下载。图 1 显示了集成组件的体系结构。

在 SharePoint 2010 WFE 上,该外接程序安装三个组件:SSRS 代理、报表查看器 Web 部件和应用程序页面,通过它们可以查看、存储和管理 SharePoint 站点或场上的报表服务器内容。SSRS 代理可为 WFE 和报表服务器之间的通信提供便利。在 SharePoint 中的“管理中心 Reporting Services”页面上,您可配置要访问的报表服务器的代理,以及访问服务器的身份验证方法和凭据。为了实现集成,您必须将报表服务器配置为在 SharePoint 集成模式下运行。

Figure 1: Server Integration Architecture

图 1 服务器集成体系结构

图 1 中,要注意的一项是报表服务器上的 SharePoint 对象模型组件。要让报表服务器了解存储在 SharePoint 中的报告信息,并且能够保护这些信息,报表服务器必须与 SharePoint 站点或场上的配置和内容数据库进行交互。您可以通过在报表服务器上安装 SharePoint 的最小副本并将其加入到 SharePoint 场中,来实现这个目标。

您在报表服务器上安装的 SharePoint 版本必须与整个 SharePoint 场中使用的版本相同。 只有当您在独立计算机上运行报表服务器时,您才需要这样做。如果您在同一台计算机上运行 SharePoint 和 Reporting Services,则只需安装外接程序。

配置集成

总体来说,SharePoint 2010 和 SQL Server 2008 R2 的集成配置已得到简化。执行配置的顺序取决于您已安装的组件。即便您从头开始安装,或者基于现有安装进行安装,仍必须安装所有主要组件,然后才能配置 SharePoint 中的 SSRS 代理。如果从头开始安装,则为了使 SQL Server Reporting Service 2008 R2 与 SharePoint 2010 的集成获得最佳效果,建议遵循以下顺序:

  1. 运行 SharePoint 2010 必备组件安装程序,这样将安装 SharePoint 的 SSRS 2008 R2 外接程序。
  2. 在场配置中安装和配置 SharePoint 2010。
  3. 如果报表服务器计算机和 SharePoint WFE 计算机是分开的,请在报表服务器计算机上重复步骤 1 和步骤 2,并对其进行配置以加入在步骤 2 中创建的 SharePoint 场。
  4. 在 SharePoint 集成模式下安装 SQL Server Reporting Services。
  5. 通过“Reporting Services 集成”页面配置 SSRS 代理,并激活 Reporting Services 功能。  

如果没有在您的站点的“文档”|“新建”菜单中看到 Reporting Services 内容类型,您将需要手动添加这些类型。我将在下文的与 Report Builder 3.0 集成 部分中介绍如何添加“报表服务器内容”类型。

在本例中,我将使用 SQL Server 作为 SharePoint 数据库,而不使用 SharePoint 默认的 Embedded Edition。如果您打算将所有组件安装在一台计算机上,则无需执行步骤 5。步骤 1 和步骤 2 可以合并在 SQL Server 安装过程中。

如果您已安装 SharePoint,则可随时下载和安装外接程序。外接程序安装过程将向“SharePoint 管理中心”添加必需的页面,并使用商务智能 (BI) 中心站点模板,为站点中的现有 SharePoint 库添加新的报表服务器内容类型。

在 SharePoint 一端,您可在 SharePoint Server 2010 或 SharePoint Foundation 2010 上配置集成。两种软件都支持 Reporting Services 外接程序的安装。如果您将 SharePoint 和 Reporting Services 安装在不同的计算机上,则必须在报表服务器上安装相同版本的 SharePoint。例如,如果使用 SharePoint Server 2010 作为 Web 前端,则不能在报表服务器上安装 SharePoint Foundation 2010。

外接程序安装非常简单;除了输入您的姓名和公司之外,不需要其他任何配置。如果您是第一次安装 SharePoint,则应在安装 SharePoint 之前安装外接程序;在您运行 SharePoint 2010 必备组件时,会自动完成此安装。

配置报表服务器非常简单。主要注意事项包括:

  • SQL Server 的版本必须为 Standard、Enterprise 或更高版本。
  • 必须为 SharePoint 集成模式创建报表服务器数据库。
  • 如果您将 SharePoint 和 Reporting Services 安装在不同的计算机上,则将需要 SharePoint 的最小安装,并将其加入报表服务器上的 SharePoint 场。

报表服务器作为单个 Windows 服务实现,该服务在内置帐户或者本地或域 Windows 用户帐户下运行。在 SharePoint 集成模式下,报表服务器帐户要进行适当设置,以访问 SharePoint 配置和内容数据库以及 SharePoint 对象模型资源。当通过“Reporting Services 集成”页面配置 Reporting Services 与 SharePoint 的集成时,需要进行此类设置。

当身份验证模式为“Windows 集成”时,登录到 SharePoint 的 Windows 用户在从 WFE 连接到报表服务器时将被模拟。当身份验证模式为可信帐户时,登录到 SharePoint 的用户的 SharePoint 用户上下文将以 SharePoint 用户令牌的形式传递到报表服务器。使用 SharePoint WFE 的应用程序池帐户进行从 WFE 到报表服务器的连接。您可在 TechNet 文章“配置 Reporting Services 实现 SharePoint 2010 集成”中找到服务帐户配置的摘要。

如果您已使用默认设置安装 Reporting Services,则 Reporting Services 数据库将处于本机模式。要在 SharePoint 集成模式下运行,您需要返回到 Reporting Services 配置工具,并从“数据库设置”页面将模式从“本机”更改为“SharePoint 集成”。 

可以随时将报表服务器模式从“本机”更改为“SharePoint 集成”,但这不会转换现有数据库。每次切换时,您必须创建一个新数据库或连接到一个现有数据库。

在配置 SharePoint 中的“Reporting Services 代理”选项之前,需要进行另外一项配置。您应确保未在 Web 应用程序上启用匿名访问。虽然这不会妨碍您配置“Reporting Services 代理”设置,但用户在运行报表时将会出现错误。您可以选择使用 Windows 身份验证或其他身份验证提供程序提供的任何基于声明的身份验证,如果要配置报表服务器与 SharePoint 场之间的集成,则可将场中的每个 SharePoint Web 应用程序配置为使用不同的身份验证提供程序。

外接程序将在“SharePoint 管理中心”的“一般应用程序设置”页面中创建新的“Reporting Services”部分。在“Reporting Services 集成”页面上,您需要输入报表服务器 URL 和身份验证详细信息,并在场中的所有或选定站点集合中激活 Reporting Services 功能。

图 2 配置 Reporting Services 代理

完成图 2 中所示页面的设置后,集成配置过程完成。

与 Report Builder 3.0 集成

SharePoint 和 Reporting Services 之间的集成的主要优点是允许用户从 SharePoint 内部创建、修改和发布报表。Reporting Services 提供了一些预定义内容类型,可用于管理各种文件,包括共享报表数据源 (.rsds) 文件、报表生成器模型 (.smdl) 和报表生成器报表定义 (.rdl) 文件。在已配置集成以允许用户从功能区和上下文菜单创建和管理这些新内容类型之后,您需要在这些库上启用新内容类型。

如果使用 BI 中心站点模板,则无需进行任何操作,内容类型将在模板以及使用此模板创建的所有站点中自动启用。对于其他所有站点和文档库,您需要执行两步骤的配置过程。首先,您需要在库中启用内容类型管理;它在默认情况下处于关闭状态。然后,您需要为库启用内容类型。若要为文档库启用内容类型管理,请按照 TechNet 文章“如何:将报表服务器内容类型添加到库(SharePoint 集成模式下的 Reporting Services)”中的过程操作。

在将新内容类型添加到库后,“文档”选项卡上的“新建文档”下拉列表中将出现三个新选项。如果现在选择“报表生成器报表”选项,则会将 Report Builder 3.0 下载到客户端并运行该程序。您可从 SharePoint 管理中心更改此行为。通过“Reporting Services 服务器默认值”页面,您可以关闭此选项,并为报表生成器配置其他 URL。

在 SharePoint 站点上使用报表查看器 Web 部件

报表查看器 Web 部件是一个自定义 Web 部件,由 Reporting Services 外接程序安装。可使用该 Web 部件来查看、导航、打印和导出报表服务器上的报表。若要将此 Web 部件添加到页面中,可以使用 TechNet 文章“如何:将报表查看器 Web 部件添加到网页(SharePoint 集成模式下的 Reporting Services)”中的步骤。

每个报表查看器 Web 部件基于在报表属性中指定的报表文件 (.rdl) 的绝对 URL,每次呈现一个报表。该 URL 必须为当前 SharePoint 站点或同一 Web 应用程序或场中的站点上的报表的完全限定路径。该 URL 必须解析为文档库或包含报表的文档库中的文件夹。报表 URL 必须包括 .rdl 文件扩展名。如果报表依赖于模型或共享数据源文件,则无需在 URL 中指定这些文件。报表包含对其需要的文件的引用。

声明身份验证和 Reporting Services

SharePoint Server 2010 推出的一项新功能是支持基于声明的身份验证。在声明感知应用程序中,客户端向应用程序提交“声明”。这些声明是关于用户的数条信息,例如用户名、电子邮件地址或经理姓名。这种方式为应用程序提供的信息要多于使用 Kerberos 时接收的信息。例如,对于一个采购应用程序:传递到应用程序的两个声明可能是用户的经理的电子邮件地址和用户的采购限额。在非声明感知应用程序中,此类信息必须由应用程序管理。

在 SharePoint 中,声明身份验证解决了在多个组织之间共享 SharePoint 站点的问题。使用 Active Directory 联合身份验证服务 (AD FS) 等产品,两个使用不同身份验证方法的组织可以设置声明,让 SharePoint 能够识别用户身份并分配正确的权限。

由于此功能内置在 SharePoint 2010 产品中,因此 Reporting Services 可以使用此身份验证模式。Reporting Services 不是声明感知的,而是通过可信帐户与 SharePoint 通信。SQL Server 2008 R2 外接程序中的代理服务使用 SharePoint 对象模型,采用报表服务器能够理解并用来对 SharePoint 数据库进行验证的 SharePoint 用户令牌形式将声明令牌转换为对应的 SharePoint 用户上下文。简而言之,此过程的工作方式如下:

  1. SharePoint 执行适当的声明身份验证,并使用 SharePoint Secure Token Service 将声明令牌传递到 Reporting Services 代理。
  2. 然后,Reporting Services 代理使用声明令牌与 SharePoint 对象模型进行通信,并生成相应的 SharePoint 用户令牌,将令牌转发到报表服务器。
  3. 报表服务器使用 SharePoint 用户令牌针对本地 SharePoint 对象模型生成正确的 SharePoint 用户上下文。
  4. 如果用户拥有必需的权限,则报表服务器会使用它通常使用的适当 SharePoint 用户上下文,将请求的信息发送回 SharePoint。

本地列表报告

SQL Server 2008 R2 Reporting Services 现在支持将 SharePoint 列表作为数据源。有了此支持功能,您能够从 SharePoint Foundation 2010、SharePoint Server 2010、Windows SharePoint Services 3.0 和 Office SharePoint Server 2007 检索列表数据。访问列表数据的功能不依赖外接程序,也不依赖在本机或 SharePoint 集成模式下运行报表服务器。该功能已内置在报表服务器中。不同配置的区别在于访问方法。

有两种访问 SharePoint 列表数据的方法。一种方法是通过 lists.asmx web 服务,另一种方法是通过 SharePoint 对象模型 API。在任何 SharePoint 安装上,如果输入 URL http://<sharepoint_server_name>\lists.asmx,您将获得能够访问的 SharePoint 站点上的所有列表的 XML 列表。使用此方法,Report Builder 3.0 可以检索列表。在本机模式下配置的报表服务器也使用此方法。

SharePoint 对象模型 API 方法可在两种方案中使用。一种方案是报表服务器在 SharePoint 集成模式下配置,列表存在于集成了 Reporting Services 的同一个 SharePoint 场中,它们都在同一台计算机上;请记住,在此方案中,有一个 SharePoint 副本在报表服务器上运行,报表服务器为其提供对 API 集的访问。另一种方案是同时安装了 SharePoint 2010 和外接程序,但您没有报表服务器。这称为本地模式,将在下文的“没有 Reporting Services 的报告”一节中介绍。

若要在报表中使用从 SharePoint 列表获取的数据,首先需要创建数据源,然后创建使用该数据源的数据集。在 Report Builder 3.0 中,“数据源属性”页面上有一种新的连接类型,称为“Microsoft SharePoint 列表”,如图 3 所示。除了此选项之外,您还要输入 SharePoint 站点的 URL(无需在 URL 中添加 lists.asmx)。还可为数据源配置在访问 SharePoint 服务器时使用的不同凭据。

Figure 3: SharePoint List Connection Type

图 3 SharePoint 列表连接类型

基于此数据源创建新数据集时,将显示您可以访问的站点上的所有 SharePoint 列表的列表。然后,您可以向下钻取到列表并访问各个列表项,创建筛选器,创建参数并创建报表,就如同它是 SQL 数据库表那样。

备用访问映射支持

另一项集成增强功能是支持备用访问映射 (AAM)。从 SharePoint 2007 版本就已经开始提供 AAM 功能,但 Reporting Services 不支持 AAM。现在,如果您在 SharePoint 管理中心配置备用访问映射,Reporting Service 外接程序将维持 URL 结构,如图 4 中的简单报表所示。http://sql-01 和 https://www.contoso.com 都呈现相同的报表。

Figure 4: Alternate Access Mapping

图 4 备用访问映射

没有 Reporting Services 的报告

截止目前,本文中的所有信息都属于我们所说的连接模式。在以前版本的 Reporting Services 中,连接模式是唯一可用的模式,这意味着 SharePoint 必须连接到在 SharePoint 集成模式下配置的 Reporting Services 报表服务器,才能使用报表查看器呈现报表。

随着 SQL Server 2008 R2 的发布,您可在未将 SharePoint 站点或场与 Reporting Services 报表服务器集成的情况下呈现报表。相反,当数据扩展插件支持本地模式 报告时,您可以使用报表查看器从 SharePoint 直接呈现报表。只有 SharePoint 列表和 Microsoft Access 2010 报告扩展插件默认支持此功能。

在本地模式下,您还可以呈现具有内置数据源或来自 .rsds 文件的共享数据源的报表。但是,您不能管理报表或其关联数据源,因为在本地模式下不支持此功能。

支持的 SharePoint 外接程序和报表服务器的组合

随着 SQL Server 2008 R2 和 SharePoint Server 2010 的发布,现在有三个版本的 SQL、三个版本的外接程序和两个版本的 SharePoint。集成组件可在所有这些版本上运行,但您必须组合并匹配正确的版本。图 5 中的表格提供了支持的产品组合。

Figure 5: Supported Combinations of the SharePoint Add-In Report Server

图 5 支持的 SharePoint 外接程序和报表服务器的组合

Alan Le Marquand担任 Microsoft IT 专业内容架构师,长驻英国。您可在 Le Marquand 的博客Alan 的 IT 世界 上阅读更多内容。

相关内容