第16章 SQL Server 2005报表服务   SQL Server 2005报表服务(Reporting Services)是基于服务器的报表平台,可以用来创建和管理包含关系数据源和多维数据源中的数据的表格、矩阵、图形和自由格式的报表。用户可以通过基于万维网的连接来查看和管理所创建的报表。本章将在简要介绍SQL Server 2005报表服务的基础上,详细介绍如何创建和部署一个简单的报表,主要包含以下知识点: * 报表服务简介; * 报表服务组件; * 创建和设计报表; * 发布和使用报表。   通过本章的学习,读者可以轻松地创建和发布一些简单的SQL Server 2005报表,为以后继续学习SQL Server 2005复杂报表打下坚实的基础。 16.1 报表服务简介   SQL Server 2005报表服务是一个基于服务器的报表平台,用来创建、管理和发送报表。该产品依赖于Windows的IIS服务。SQL Server 2005报表服务提供给用户一个简便的解决方案,来创建、分发和管理报表,主要包括以下3个方面的核心组件。 * 一整套工具:可以用来创建、管理和查看报表。 * 一个报表服务器组件:用于承载和处理各种格式的报表。输出格式包括HTML、PDF、TIFF、Excel、CSV等。 * 一个API:使开发人员可以在自定义应用程序中集成或扩展数据和报表处理,或者创建自定义工具来生成和管理报表。   生成的报表可以基于SQL Server、Analysis Services、Oracle或任何Microsoft .NET数据访问接口(如ODBC或OLE DB)提供的关系数据或多维数据。可以创建表格、矩阵和自由格式的报表。还可以创建使用预定义模型和数据源的即席报表。   在Reporting Services中生成的报表包括交互功能和基于Web的功能,在外观和功能上超越了传统的报表。例如,深化报表允许在数据层间进行导航;参数化报表支持在运行时对内容进行筛选;自由格式的报表支持以垂直、嵌套和并排方式安排内容布局,支持指向基于Web的内容或资源的链接,支持通过远程或本地Web连接安全地集中访问报表。   尽管Reporting Services本身已与Microsoft的其他技术进行了集成,但是开发人员和第三方供应商可以生成相应的组件,以支持其他报表输出格式、传递格式、身份验证模式和数据源类型。在模块设计中特意创建了开发和运行时体系架构,以支持可能采用的第三方扩展和集成。   用户在使用SQL Server 2005 Reporting Services前,要求运行SQL Server 2005 Reporting Services服务。启动报表服务的操作过程如下所示。   (1)在桌面“开始”菜单中,依次选择“程序”|“Microsoft SQL Server 2005”|“配置工具”|“SQL Server配置管理器”命令,打开“SQL Server Configuration Manager”对话框。   (2)单击“SQL Server 2005服务”节点,在右侧的详细窗格中,右击“SQL Server Reporting Services(MSSQLSERVER)”服务,在弹出的快捷菜单中选择“启动”命令,即可启动报表服务。 16.2 报表服务组件   SQL Server 2005 Reporting Services是一组处理组件、工具和编程接口的集合,支持在托管环境中进行开发以及使用格式丰富的报表。该工具集包括部署工具、配置和管理工具以及报表查看工具。编程接口包括简单对象访问协议(SOAP)、URL端点和Windows Management Instrumentation(WMI),可以轻松地与新的或现有的应用程序和入口集成。   处理分布在多个组件上。中央处理器和专用处理器用于检索数据,处理报表布局,呈现显示格式以及传递到目标。检索数据并将检索的数据从数据处理任务中分离后,即开始进行显示处理,并允许多个用户以针对不同设备设计的格式同时查看同一报表。或通过一次单击,将报表的查看格式从HTML快速更改为PDF、Microsoft Excel或XML。模块化体系结构是为了实现可扩展性而设计的。开发人员可以将报表功能包括在自定义应用程序中,或扩展报表功能以支持自定义功能。   图16-1显示了SQL Server 2005 Reporting Services的组件和工具。该图还显示了自定义 图16-1 SQL Server 2005 Reporting Services的组件和工具 工具如何适用于总体设计。它显示了服务器组件之间的请求流和数据流,以及哪些组件发送和检索数据存储区中的内容。 16.2.1 报表服务器   报表服务器是Reporting Services的主要组件。报表服务器以Microsoft Windows服务和Web服务的形式实现,可以为处理和呈现报表提供优化的并行处理基础结构。Web服务公开了一组客户端应用程序用来访问报表服务器的编程接口。Windows服务提供初始化、计划和传递服务以及服务器维护功能。这些服务协同工作,构成单个报表服务器实例。   报表服务器通过子组件来处理报表请求,并使报表可用于按需访问或计划分发。报表服务器子组件包括处理器和扩展插件。处理器是报表服务器的核心。处理器确保报告系统的完整性,但无法修改或扩展。扩展插件也是处理器,但执行的是非常具体的功能。对于每种支持的扩展插件类型,Reporting Services都包括一个或多个默认的扩展插件。第三方开发人员可以创建其他扩展插件,以替代或扩展报表服务器的处理能力。   用户可以使用“Reporting Services配置”工具为无人参与的报表处理和电子邮件报表传递指定服务账户、创建或升级报表服务器数据库、修改连接属性、设置虚拟目录、管理加密密钥以及配置报表服务器。启动“Reporting Services配置”工具的操作过程如下。   (1)在桌面“开始”菜单中,依次选择“程序”|“Microsoft SQL Server 2005”|“配置工具”|“Reporting Services配置”命令,此时将出现“选择报表服务器安装实例”对话框,可以选择要配置的报表服务器实例。   (2)配置好“计算机名称”和“实例名”后,单击“连接”按钮,打开“配置报表服务器”对话框来配置报表服务器,如图16-2所示。 图16-2 “配置报表服务器”对话框 16.2.2 报表管理器   报表管理器是基于Web的报表访问和管理工具,可以通过Microsoft Internet Explorer进行访问。可以使用报表管理器通过HTTP连接从远程位置管理单个报表服务器实例,还可以使用报表管理器的报表查看器和导航功能。   可以使用报表管理器执行以下任务。 * 查看、搜索和订阅报表。 * 创建、保护和维护文件夹层次结构,以便组织服务器上的项。 * 配置站点属性和默认设置。还可以确定“我的报表”的可用性,以支持在个人工作区中发布和创建报表。 * 配置基于角色的安全性,确定对项和操作的访问权限。 * 配置报表执行属性、报表历史记录和报表参数。 * 创建报表模型。使用这些报表模型可以连接到SQL Server Analysis Services数据源或SQL Server关系数据源,并从这些数据源中检索数据。 * 创建共享计划和共享数据源。以提高计划和数据源连接的可管理性。 * 创建可以将报表展开为大型收件人列表的数据驱动订阅。 * 创建链接报表,以便按不同方式重用现有报表和重新确定其用途。 * 启动报表生成器,这是一个用于创建和修改模型驱动的即席报表的报表设计工具。   若要使用基于Web的工具来设置权限、管理订阅和计划以及处理报表和模型,用户可以使用报表管理器,也可以使用报表管理器来查看报表。必须拥有足够的权限才能打开报表管理器。报表管理器根据当前用户的角色分配提供不同的页和选项,没有权限的用户将得到一个空页。拥有查看报表权限的用户将获得链接,用户单击这些链接可以打开报表。启动报表管理器的操作过程如下。   (1)打开Microsoft Internet Explorer 6.0或更高版本。   (2)在Web浏览器的“地址”栏中,输入报表管理器的URL。默认情况下,该URL为http://<服务器名>/reports。例如“http://ntserver/reports”。   (3)报表管理器将在浏览器窗口中打开,如图16-3所示。 图16-3 “报表管理器”窗口 ?技巧:报表服务器管理员可以使用SQL Server Management Studio来管理报表服务器及其他SQL Server组件服务器。SQL Server Management Studio提供的功能几乎与报表管理器完全相同,但是前者还支持在同一管理工作区中管理其他服务器类型。用户连接到SQL Server 2005 Reporting Services服务后的SQL Server Management Studio管理界面,如图16-4所示。 图16-4 SQL Server 2005 Reporting Services管理界面 16.2.3 报表生成器   信息工作者通常需要访问业务数据,才能及时有效地做出决策。这些工作者需要一种功能强大且易于使用的工具,以便在无需了解基础数据源结构的情况下就可浏览和查找信息。为了帮助用户实现这些目标,SQL Server 2005 Reporting Services的报表生成器组件提供了即席生成报表的功能。报表生成器与SQL Server Reporting Services完全集成。   1.生成报表   报表生成器工具是使用人们熟悉的Microsoft Office风格生成的,以便用户快速上手。若要生成表、矩阵或图表报表,请使用包含预定义数据区域的报表布局模板,并选择包含如数据字段等报表项的报表模型,然后将不同报表项拖放到模板内的相应数据区域中。用户可以对报表应用筛选器,以完善显示的数据。报表模型包含了报表生成器自动生成用于检索请求数据的查询所需的全部信息。使用报表生成器,用户可以查找与其报表中内容相关的数据、添加文本和格式、创建基于报表模型中数据的新字段和计算,以及预览、打印和发布其报表。   2.浏览数据   使用报表生成器,用户可以按交互方式浏览报表模型中的相关数据。点击链接型报表可以自动生成。这样,报表查看者就可以通过报表模型的导航路径浏览相应的数据。只要当前项存在可访问的链接关系,报表查看者就可以继续通过单击项来查看相应的数据。查看点击链接数据时,系统将传递有关用户要用于创建其报表的数据的信息(通常是指当前数据位置的上下文),自动地生成查询。   3.使用Reporting Services的功能   报表生成器是一个可从报表服务器访问的ClickOnce WinForms应用程序,可便捷地进行集中管理。报表生成器报表可用报表定义语言(RDL)进行发布,以便用户充分利用Reporting Service的所有功能。由于报表生成器报表以RDL形式保存,因此可使用报表设计器中的高级编程功能来打开和修改这些报表。对于报表生成器报表和报表设计器报表,在进行管理、保护和传递时所用的方法和API都是相同的。此外,可以通过第三方应用程序启动报表生成器,以集成报告功能。   报表生成器可以通过URL或报表管理器访问。报表管理器是Reporting Services的一个组件,用户通过该组件可以在报表服务器上发布和查看报表。用户需要分配有相应的权限,才能访问报表生成器。在为Reporting Services实现的基于角色的安全模式中,指定为“内容管理员”角色的用户可以在报表生成器中创建和编辑报表。本地管理员将自动指定为此角色。如果希望其他用户能够使用报表生成器,则必须为其创建角色分配,可以在角色分配中包含默认角色“报表生成器”,也可以创建自定义的角色定义。只要自定义的角色中包含“使用报表”任务,那么,指定为该角色的用户就会具有足够的权限,可以使用报表生成器创建和修改报表。   用户可以使用报表生成器创建将已发布模型用作数据源的即席报表,也可以将报表生成器中的报表保存到报表服务器。若要使用“报表生成器”,只需在前面的图16-3中,单击“报表生成器”按钮,即可打开Microsoft Report Builder窗口,如图16-5所示。如果没有看到“报表生成器”按钮,可能是当前用户没有权限的原因。 图16-5 “Microsoft Report Builder”窗口 16.2.4 报表设计器和模型设计器   报表设计器和模型设计器是Business Intelligence Development Studio中的两个设计工具。工具中的设计图面包括用于访问报表和模型制作功能的选项卡式窗口、向导和菜单。选择报表服务器项目、报表服务器向导或者报表模型项目模板后,即可使用设计工具。   1.报表设计器   报表设计器是一组宿主在Microsoft Visual Studio环境中的设计图面和图形工具。报表设计器提供了“数据”、“布局”和“预览”等选项卡式视图,使用这些视图可以采用交互方式设计报表。可以添加数据集以适应新的报表设计思路,或基于预览结果调整报表布局。除了“数据”、“布局”和“预览”设计图面,报表设计器还提供了查询设计工具、表达式编辑器和向导,可以帮助用户放置图像或按步骤引导用户创建简单的报表。   2.模型设计器   模型设计器是一种用于在Business Intelligence Development Studio中定义、编辑和发布报表生成器中使用的报表模型的Reporting Services工具。报表模型是对基础数据库的业务性说明。它对实体、属性和关系(角色)方面的数据进行了说明,报表生成器用户随后可以使用这些数据来帮助生成即席报表。模型以最终用户所熟悉的可以理解的业务术语说明基础数据库。用户可以启动模型设计器并通过使用数据源直接开始设计模型,或者使用预定义的一组规则自动生成模型。模型设计器可以生成基于SQL Server 2000和SQL Server 2005数据库以及运行9.2.0.3版本或更高版本的Oracle数据库的模型。   3.带有报表设计器和模型设计器的Business Intelligence Development Studio   用户若要使用“Business Intelligence Development Studio”,请打开“开始”菜单,依次选择“程序”|“Microsoft SQL Server 2005”,然后选择Business Intelligence Development Studio命令。Business Intelligence Development Studio打开后,用户便可打开或创建新的项目模板,如图16-6所示。选择“报表服务器项目”或“报表服务器项目向导”模板时,将打开报表设计器。选择“报表模型项目”时,将打开报表模型设计器。当报表添加到项目时,将出现设计图面、选项卡式窗口和图形工具。 图16-6 “新建商业智能项目”对话框 ?注意:报表设计器和模型设计器驻留在Business Intelligence Development Studio工具中,与Microsoft Visual Studio 2005开发环境完全集成在一起。如果没有安装Visual Studio 2005,则SQL Server 2005安装程序将安装外壳程序,以便用户可以运行报表设计器。 16.3 创建和设计报表   用户可以使用报表设计器向导工具或报表设计器来创建和设计SQL Server 2005 报表。 ?注意:Reporting Services将报表定义存储在报表服务器数据库中。这些报表定义是使用报表定义语言(RDL)创建的,报表定义语言是一种描述报表中所有元素(包括数据模型、格式和表达式)的XML格式。 16.3.1 创建报表服务器项目   报表服务器项目在SQL Server Business Intelligence Development Studio中进行。创建报表项目的操作过程如下。   (1)单击桌面“开始”菜单,依次选择“程序”|“Microsoft SQL Server 2005”|“Business Intelligence Development Studio”命令,启动开发平台。   (2)选择“文件”|“新建”|“项目”命令。在弹出的“新建项目”对话框的“项目类型”列表框中,选择“商业智能项目”选项。在“模板”列表框中,选择“报表服务器项目”选项;在“名称”文本框中,输入报表项目名称RS_Tutorial_1,如图16-6所示。   (3)单击“确定”按钮,以创建报表服务器项目。   新建报表项目后,商业智能开发平台在“解决方案资源管理器”中,会出现“共享数据源”和“报表”两个目录节点,用户可以在这里创建数据源和报表。 16.3.2 建立数据源   用户可以建立数据源,具体操作过程如下。   (1)在“解决方案资源管理器”中,右击“共享数据源”节点,在弹出的快捷菜单中选择“添加新数据源”命令,弹出“共享数据源”对话框,如图16-7所示。   (2)单击“编辑”按钮,打开“连接属性”对话框。输入要连接的数据库服务器名称,也可以使用“\[实例名]”来指定实例,如图16-8所示。   (3)选择或输入一个数据库名,如Practice_JWGL数据库,单击“确定”按钮。   (4)在“共享数据源”对话框中,用户即可看到生成的连接字符串。然后,编辑该数据源的名称,如DataSource_T。   (5)单击“确定”按钮,即可完成建立数据源的操作。   此时,即可在“解决方案资源管理器”中的“共享数据源”节点下,看到刚建立的共享数据源。 图16-7 “共享数据源”对话框图 图16-8 “连接属性”对话框 16.3.3 创建报表   用户可以通过向导创建报表,具体操作过程如下。   (1)在“解决方案资源管理器”中,右击“报表”节点,选择“添加新报表”命令,打开报表向导。   (2)单击“下一步”按钮,打开“选择数据源”对话框,选择前面建立的数据源,如图16-9所示。   (3)单击“下一步”按钮,打开“查询设计器”对话框,输入查询语句,如图16-10 所示。 图16-9 “选择数据源”对话框 图16-10 “查询设计器”对话框 ?技巧:用户还可以单击“查询生成器”按钮,打开“查询生成器”对话框。通过图形界面的方式来生成SQL查询语句。   (4)单击“下一步”按钮,打开“选择报表类型”对话框,如图16-11所示。   (5)单击“下一步”按钮,打开“设计表”对话框,选择输出字段,如图16-12所示。 图16-11 “选择报表类型”对话框 图16-12 “选择报表类型”对话框 ?技巧:可以在该对话框中设置数据表字段的分页和分组。方法就是依次把需要分页和分组的字段通过“页面”和“组”按钮,添加到中间显示列表即可。   (6)单击“下一步”按钮,打开“选择表样式”对话框,如图16-13所示。   (7)单击“下一步”按钮,打开“完成向导”对话框,如图16-14所示。在“报表名称”文本框中,输入报表的名称,如“Report_Stu”。还可以选择“预览报表”复选框,在完成向导后,即可预览该报表。 图16-13 “选择表样式”对话框 图16-14 “完成向导”对话框   (8)单击“完成”按钮,将在SQL Server Business Intelligence Development Studio平台中,打开“报表设计器”,进一步修改报表,如图16-15所示。 图16-15 报表设计器 ?说明:关于“报表设计器”的使用,本书不做详细讲解。若需用“报表设计器”来设计更高级的报表,请读者自行参考SQL Server 2005联机丛书和在线帮助。 16.4 发布和使用报表   前面使用报表生成器向导或报表设计器创建报表,实际上是在本地创建报表定义。在使用报表之前,需要部署和发布报表到相应的Reporting Services上。 ?注意:要发布和运行报表要求报表服务(Reporting Services)和Windows IIS都要在处于运行状态。若没有,这需用户手动启动报表服务和IIS服务。 16.4.1 发布报表   在发布报表之前,需要设置一些关于报表项目的属性。具体操作过程如下。   (1)打开前面创建的RS_Tutorial_1报表服务器项目。   (2)打开“项目”菜单,选择“RS_Tutorial_1属性”命令,打开“RS_Tutorial_1属性页”对话框,如图16-16所示。   在该对话框中,输入TargetServerURL(目标服务器)地址http://localhost/ReportServer并设置StartItem(起始)下拉列表框为Report_Stu.rdl。 图16-16 “报表项目属性页”对话框   (3)单击“确定”按钮,返回报表服务器环境。   (4)打开“生成”菜单,单击“生成RS_Tutorial_1”命令,生成报表服务器项目。   (5)打开“生成”菜单,单击“部署RS_Tutorial_1”命令,部署报表服务器项目。   此时,系统将生成报表服务器项目并部署到指定的报表服务器上。 16.4.2 使用报表   生成和部署报表后有两种方式可以使用该报表服务器项目:Visual Studio和Web。使用Web方式来使用报表的操作过程如下。   (1)在Internet Explorer的地址栏中,输入“http://ntserver/ReportServer”并按下Enter键,进入图16-17所示的界面。 图16-17 报表服务器Web界面   (2)在Internet Explorer的地址栏中,输入“http://ntserver/Reports”并按下Enter键,进入图16-18所示的“报表管理器”界面。   (3)单击RS_Tutorial_1链接,进入其目录,显示RS_Tutorial_1报表服务器项目下所有的报表定义文件。 图16-18 “报表管理器”界面   (4)单击Report_Stu报表文件,打开报表运行窗口,如图16-19所示。 图16-19 报表运行窗口   在该窗口中,用户可以完成以下操作。   * 通过记录导航条,前后移动并显示记录;   * 搜索文本;   * 导出报表到相应格式文件;   * 打印报表。 16.5 常见问题及解答   请问Visual Studio 2008开发出来的报表能否在SQL Server 2005的报表服务器上运 行呢?   解答:微软推出了Visual Studio 2008和SQL Server 2005的组合。很显然,用Visual Studio 2008开发出来的报表服务,当然能在SQL Server 2005报表服务器上运行。而且它还集成了Reportviewer等控件,很方便地就能和SQL Server 2005集成。 16.6 小 结   报表服务是一个基于服务器的企业级报表环境,可借助Web Services进行管理。报表可以用不同的格式发布,并可带多种交互和打印选项。通过把报表作为更进一步的商业智能的数据源来分发,复杂的分析可被更多的用户所用。本章详细介绍如何创建、部署、发布、使用简单的报表。   第17章将学习SQL Server 2005商业智能中的分析服务功能,利用该分析服务可以来开发和部署Analysis Services项目。 16.7 习 题   1.SQL Server2005报表服务体系结构是怎样的。   2.报表服务器完成什么功能,如何配置报表服务器。   3.叙述创建、发布报表的过程,如何使用SQL Server2005中发布的报表。 第5篇 SQL Server 2005商业智能篇    第16章 SQL Server 2005报表服务    ·364·       ·373·