SQL Server Reporting Services 2005 XML 扩展






4.37/5 (8投票s)
在 SSRS 2005 中,有一个新的提供程序:XML 数据提供程序。这使您能够从 URL 可寻址的资源(例如 Web 服务)中的 ADO.NET 数据集或 XML 文档创建报表。本文将通过一个逐步示例(基本报表,无参数)展示如何使用这个新的 SSRS 2005 功能。
引言
Microsoft SQL Server Reporting Services (SSRS) 支持大量数据源。开箱即用,其数据模块(称为数据扩展)允许您从 SQL Server 和 Oracle 数据库以及任何带有 OLE DB 或 ODBC 提供程序的数据库构建报表。
在 SSRS 2005 中,有一个新的提供程序:XML 数据提供程序。这使您能够从 URL 可寻址的资源(例如 Web 服务)中的 ADO.NET 数据集或 XML 文档创建报表。
本文将通过一个逐步示例(基本报表,无参数)展示如何使用这个新的 SSRS 2005 功能。
这是报表和 Web 服务的示例代码。
我包含了几张截图,但其中一些并不真正清晰,但结合示例代码,您将能够理解该示例。
请注意,您需要
- Visual Studio 2005 Service pack 1
- Visual Studio 2005 报表设计器(SSRS 2005 客户端组件的一部分)
- SqlServer 2005
- SqlServer 2005 报表服务
- SqlServer 2005 报表服务 Service pack 2
背景
XML 数据扩展
原理
SSRS 服务器端报表获取数据的常用方法是通过指定关系数据库和检索数据的 SQL 语句。报表(由报表引擎解释)是消费者,数据库是数据提供者。
在报表已部署的设计时和运行时,将由 SQL 数据库数据扩展从配置的数据库检索报表定义中指定的数据集。

使用 XML 数据扩展,现在可以指定 XML 文档作为数据源,或者指定返回 ADO.NET(类型化)数据集的 Web 服务方法。

您不必指定数据库并使用 SQL 语句,而是必须指向一个 Web 服务并指定 Web 方法以及返回结果的 Xpath。
优点
- 开箱即用。无需为处理(序列化)ADO.NET 数据集制作自定义数据扩展。您也不需要为服务器和报表设计器工作站部署额外的软件。
- 您可以将数据检索和/或转换放在 Web 服务方法后面的代码中,而不是使用纯 SQL 或存储过程。
关注点
- 纯数据推送功能仍然不可用,例如在 Crystal Reports 中,您可以将数据提供给报表(和报表引擎)。SSRS 2005 在客户端报表与 Report Viewer 控件一起使用时具有此功能。服务器端报表需要自定义数据处理扩展。
- SOAP 上的 ADO.NET 序列化会消耗大量资源。
示例
Webservice
定义一个带有 webmethod 的 webservice,该 webmethod 返回一个(类型化)数据集。

当您使用 VS 2005 构建 Web 服务时,请将 Web 服务配置为使用 IIS 作为主机,而不是默认的 Visual Studio ASP.NET 托管服务器。当您使用 ASP.NET Web 服务项目模板(在 VS 2005 Service Pack 1 中可用,或者您可以将其下载为单独的附加组件)时,Web 选项卡就会出现。


报表数据源
指定一个指向先前定义的 webservice 的数据源。选择 XML 作为数据扩展。连接字符串是 webservice 的 URL。

指定报表数据集。您不必使用 SQL 语法,而是必须说“web-service”语言。您可以从 Web 服务测试页面和结果页面推断出此信息。
基本上,您指定
webmethod
的名称- 用于从 Web 服务响应文档中获取结果的 Xpath,其中包括数据集的名称和
dataTable
的名称。使用 Webservice Studio 等工具,您可以在执行 Web 方法请求时实际看到 SOAP 消息的样子。
执行数据集

报表布局
创建您的报表布局。

预览报表。

将报表部署到您的报表服务器。
从报表服务器门户运行报表。现在,SSRS 服务器将调用数据源(Web 服务)来提供数据给报表。

结论
我发现使用这个新扩展很有趣,并且对于我们的一些报告需求非常有用。我们过去曾为 ADO.NET 数据集使用自定义数据库扩展。现在,对于 SSRS 2005,您无需维护和部署此自定义扩展。
来源和推荐阅读
- 第 2 课:为来自 Web 服务的 ADO.NET
DataSet
定义报表Dataset
,MSDN,http://msdn2.microsoft.com/en-us/library/aa337489.aspx - 用于指定 XML 报表数据的元素路径语法,MSDN,http://msdn2.microsoft.com/en-us/library/ms365158.aspx
- 为 XML 数据定义报表
Dataset
s,MSDN,http://msdn2.microsoft.com/en-us/library/ms159741.aspx - 用于指定 XML 报表数据的 XML 查询语法,MSDN,http://msdn2.microsoft.com/en-us/library/ms345251.aspx
- 使用 SQL Server Reporting Services 自定义数据扩展从任何数据源创建报表,Teo Lachev,http://www.devx.com/dbzone/Article/31336
- 使用 RS 2005 XML 扩展报告 ADO.NET 数据集,Teo Lachev,http://prologika.com/CS/blogs/blog/archive/2005/11/20/695.aspx
- Professional SQL Server 2005 Reporting Services,Paul Turley,Todd Bryant,James Counihan 和 Dave DuVarney,Wrox Press 2006
历史
- 2007 年 9 月 25 日:初次发布