Reporting Services 是基于服务器的报表生成平台,该平台构建在 .NET Framework 上并与 SQL Server 2000 集成在一起,因此您可以使用一个扩展的基于 Web 服务的 API 将丰富的报表生成功能集成到应用程序中。尽管报表服务器使用 SQL Server 作为报表的储存库,但利用 OLE DB、ODBC 或 ADO.NET 提供程序的任何数据源都可以用来为报表提供数据,这就使得 Reporting Services 成为在各种企业环境中生成报表的极佳工具。
Reporting Services 是作为 SQL Server 2000 的一部分而授权的,因此如果您有已授权的 SQL Server 的副本,则可以在同一服务器上运行 Reporting Services 而无需支付额外的许可证费用。如果您决定在独立的、尚未经 SQL Server 授权的计算机(例如,Web 服务器)上运行 Reporting Services,您将需要购买额外的 SQL Server 许可证。
要开始使用 Reporting Services,您可以下载位于 SQL Server 2000 Reporting Services 的 120 天试用版软件,它还包括有关如何获得该产品的安装媒体的说明。在安装该产品时,请确保选中包括示例报表的选项,因为我要将这些报表集成到本文的 Web 应用程序中。
Reporting Services 概述
Reporting Services 报表设计使用新的 Visual Studio .NET 2003 报表设计器,在安装有 Visual Studio 的同一计算机上安装了 Reporting Services 后,该设计器就可以使用。设计器以新的基于 XML 报表定义语言 (RDL) 输出报表布局和数据访问的说明,而 RDL 文件会发布到报表服务器。如果您希望为用户提供创作功能,也可以使用第三方的报表设计器。
管理员可以使用基于 Web 的报表管理器来管理已发布的报表,并且可以执行一些任务,例如,保证某些用户组报表的安全或更改已部署报表的数据源连接字符串。用户也可以使用报表管理器来浏览和查看报表;但是很多公司倾向于使用 URL 请求或 Reporting Services Web 服务,将报表查看直接集成到它们现有的内部 Web 站点或应用程序中
在部署报表项目后,您就可以进行测试了。已部署到服务器的每个报表都具有唯一的路径,该路径可以用于在浏览器中显示报表。例如,要显示您创建的第一个报表,请打开浏览器并导航到 http://MyServer/ReportServer?/Report+Project1/Products+Report。这会以 HTML 格式呈现报表并在页面的顶端显示一个工具栏,以便使您可以对报表进行翻页、更改缩放比例,甚至以各种其他格式(例如,PDF)查看报表。
其中最有用的一个参数就是 rs:Format 参数,它用于指定呈现报表的格式。这使您可以包括不需要显示在 HTML 中的报表,还可以使用诸如 PDF 甚至是 XML 的格式。其他常用参数是 rs:Command,指示出要应用到您所指定的路径的操作。例如,rs:Command=Render 将呈现一个报表,而 rs:Command=ListChildren 将列出文件夹中所有项。
您可以使用该控件将嵌入报表添加到仪表板应用程序中。将控件添加到 Web 页,设置高度和宽度属性并添加以下代码以便在页面中显示一个报表:作者: ajax 时间: 2008-10-14 18:15
Private Sub Page_Load(ByVal sender As System.Object, ByVal _ e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
ReportViewer1.ServerUrl = "http://MyServer/ReportServer"
ReportViewer1.ReportPath = "/SampleReports/Sales Order" & _
"Detail&SalesOrderNumber=so8153"
ReportViewer1.Toolbar = ReportViewer.multiState.False
ReportViewer1.Zoom = "75"
End If
End Sub
保证报表的安全
Reporting Services 安全性使用熟悉的基于角色的模型。用户和组可以分配给诸如 System Administrator 或 Browser 之类的角色,特定角色的所有成员都将允许执行为该角色定义的操作。
报表管理器用于执行与安全性相关的任务,例如,分配用户角色或修改项(例如,报表)的权限等。默认情况下,Administrators Windows 组同时是所有文件夹的 System Administrator 和 Content Manager 的成员。为了扩展报表访问到其他用户,用户帐户或组必须添加到诸如 Browser 的角色中。这通常是在文件夹级设置的,同时也可以针对单独的报表进行重写。
除了保护对报表的访问外,管理员还必须决定如何将报表连接到源数据库。可以配置数据源使用集成的安全性,以便可以使用当前的用户帐户进行数据库连接。此外,还可以定义 Windows? 或 SQL Server 用户名和密码,并将其安全地存储在报表服务器数据库中。这种方法要求报表运行在无用户交互(例如,订阅所涉及的交互)的情况下。
使用 Reporting Services Web 服务
到目前为止,我一直使用的 URL 访问方法提供了一种快速便捷的方式来查看报表并指定参数,但是它不能提供对所有可用的报表管理功能的访问。Reporting Services 还附带了一个具有丰富功能的 API,为您提供通过 Web 服务对高级功能的访问。例如,该 Web 服务包括用于管理报表的数据源信息的方法或者枚举某个文件夹中所有项的方法。
我将使用 Web 服务将报表的动态列表添加到仪表板应用程序中。为此,您将需要使用 Add Web Reference 将一个 Web 服务引用添加到应用程序中。指定到 Web 服务的路径,如下所示:
http://MyServer/ReportServer/ReportService.asmx
在添加引用后,您可以创建 ReportingService 代理类的一个实例,并调用该服务上的一个方法,就像我在此处完成的一样:作者: ajax 时间: 2008-10-14 18:15
Private Sub LoadSampleReports()
Dim rs As New ReportingService
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim item As CatalogItem
For Each item In rs.ListChildren("/SampleReports", False)
If item.Type = ItemTypeEnum.Report Then
DropDownList1.Items.Add(New ListItem(item.Name, item.Path))
End If
Next
End Sub
要更改示例报表的数据源,请打开“Report Manager | Sample Reports”,然后单击 AdventureWorks 数据源。该数据源由所有示例报表共享,因此对它所做的任何更改将会影响所有报表。选中“Credentials stored securely in the report server”选项,指定一个具有访问 AdventureWorks 数据库权限的帐户的有效域用户名和密码,选中“Use as Windows credentials when connecting to the data source option”,然后单击“Apply”按钮。请注意,这种更改意味着指定的帐户将始终用于连接该数据库,不管实际上是哪个用户运行该报表。
因此,您已经准备好深入研究并查看提供对订阅访问的 Web 服务 API。使用 Web 服务的这一部分比使用 List 或 Render 方法要多一些挑战,主要原因在于可用选项的数量。我将要使用的方法是 CreateSubscription,它也属于 ReportingService 类。有关该方法的参数的详细说明,请参阅 ReportingService 类,但最基本的是您需要指定要订阅的报表、生成计划(例如,每周一早晨或每月的最后一个周五)、电子邮件选项(包括电子邮件地址)以及所有报表参数值。
我已经将名为 EmailSubscriber 的实用工具类包括在本文的示例代码中,该示例代码摘要了某些复杂的内容。仪表板应用程序使用该类允许用户指定他们的电子邮件地址并使 Employee Sales Summary 报表通过电子邮件每周一发送给他们。在产品应用程序中,您可以调整每个用户的报表,例如,当您创建订阅时,可以根据员工的 Windows 用户帐户检索他们的员工 ID,然后适当地设置报表参数。
如果您不希望等到下周一才测试您的订阅,它有助于您了解有关 Reporting Services 如何处理订阅计划的更多信息。当您创建一个订阅时,Reporting Services 会创建一个根据要求的计划执行的 SQL Server 代理作业。您可以通过打开 Enterprise Manager,展开 Management、SQL Server Agent 和 Jobs 文件夹来查看这个作业。该订阅作业将具有“Report Server”类别,并以由 Reporting Services 用来跟踪该作业的 GUID 命名。右键单击该作业并选择 Start Job,如果您已正确地设置了您报表的方方面面,您的报表将会发送电子邮件给您。作者: ajax 时间: 2008-10-14 18:15
接下来该怎么做?