前 言
Reporting Services是一个报表设计和企业级信息发布工具,这个工具从出现至今已经有9年了。本书也随着这个产品一起不断更新。我们早在2003年这项产品发布之前就开始撰写Professional Microsoft SQL Server Reporting Services一书。在Reporting Services发布了4个新的版本之后,本书也已经出了4版。
基于我们在SSRS及其他报表工具中所获得的经验,我们学习了大量与报表创作和报表解决方案开发有关的知识。我们将在本书中分享这些经验。我们不仅要向你展示如何使用这项本来就是用于设计报表的技术和相关工具来设计报表,还将分享我们在使用这项技术和相关工具过程中学到的最佳实践和教训。作者花费了大量时间使用这些工具来解决多个不同行业和业务领域中遇到的业务问题。
本书读者对象
某些书籍是专门为初学者撰写的,某些书籍是为认真的开发人员和高级报表设计人员编写的。我们的观点是,在不牺牲少数人需求的前提下,要强调满足大多数人的需要。我们打算撰写一部能够满足广大读者需求的著作,同时也要满足报表设计人员、开发人员、管理人员和业务专家的特殊需求。
对本书而言,我们的目标是让本书成为一部综合性指南和一部极具价值的参考书。为了达到这个目标,我们将本书分为不同的部分,如果你愿意的话,每个不同部分都可以是一本书,只是规模较小。你可以根据自己的需要,针对某个部分花费较多的时间和精力,而将其他某些部分作为参考书来使用。本书是为报表设计新手撰写的,同时也适用于那些打算学习高级报表功能的读者。对应用程序开发人员而言,我们还介绍了报表编程和如何通过编程将报表集成到自定义的应用程序中。你还将学习到报表服务器管理以及与安全性有关的内容。
我们不仅知道都有哪些人士以各种不同方式使用Reporting Services,还掌握了其他更多内容。下面各节描述了具有不同角色的人群,还描述了本书是如何满足不同人群的需求的。我们为这些代表不同人群的人取了名字,希望使示例更为真实。将这些示例作为指南,你不仅可以找到能够与你的工作具有最佳匹配度的角色,还可以知道你使用Reporting Services的方式。
报表设计人员
Mary在一个为消费者提供服务的公司的财经部门工作。Mary是一位熟练的计算机用户,掌握多项办公技能。她已经在此集团工作多年,可以轻松完成老板交给的工作。她熟悉公司的业务过程、财经报表流程,也熟悉票据和计费系统。她不是计算机天才,但了解文字处理、电子表格、电子邮件,还了解简单的数据库报表。Mary好几年前就开始使用Microsoft Access,根据从HR及客户计费系统导出的数据,她可以使用向导创建一些简单报表。过了一段时间,她学习了如何编写查询语句和构建Access报表,并且可以在不使用向导的情况下,自行定义报表格式、进行分组和汇总。她已经使用过其他报表工具,并且能够基于公司数据仓库中的数据和某些运营数据库生成报表。她已经会使用图表和透视图来设计报表并分析销售趋势和盈利情况。她所在公司最近要对Reporting Services的使用进行标准化。
Mary关注的核心内容是直接可以使用的报表系统,也就是说,她需要使用产品中提供的简便易用的工具来设计和部署报表,而且要尽可能的简单。她可能需要设计基于服务器的标准报表,其他用户需要通过公司的内部网络从一个中心报表服务器访问这些报表。她可能还需要根据管理员或其他高级设计人员创建的数据模型,创建自己特定的客户端报表。
Mary对本书中的以下部分内容最感兴趣:
● 第Ⅰ部分:入门
● 第Ⅱ部分:报表设计
● 第Ⅲ部分:设计商业智能报表
● 第Ⅳ部分:启用用户报表
应用程序开发人员
Joe已经从事了数年数据库应用程序开发工作。几年前他开始使用Microsoft .NET编程工具,并且在公司的信息技术部门获得了一个编程职位。Joe使用Visual Basic .NET和C#编程语言为公司设计了多个网站和门户。Joe所创建的大多数报表都是从头开始编写的,就像开发自定义网页那样。他曾用过几种报表应用程序,希望为公司的定制业务应用程序添加报表功能。
就Joe看来,编写简单报表是其他人的事,他更为关注的是如何向一个解决方案中添加功能,而不是处理业务问题和与报表美观有关的质量内容。他关注的是使用程序代码和查询脚本来添加筛选、自定义格式化与条件逻辑功能。他还要设计自己的报表,从而使之能够嵌入到应用程序中,成为一个解决方案的集成部分。他还希望创建自定义的管理工具,从而能够完成自动化报表服务器日常维护工作。
Joe知道,为将报表集成到不同的应用程序接口中,Reporting Services提供了多种灵活的选项。他不仅需要将报表嵌入到一个自行开发的Windows桌面应用程序中,还需要将其嵌入到Web应用程序、SharePoint门户以及移动设备应用程序中。
Joe对以下部分内容最感兴趣:
● 第Ⅱ部分:报表设计
● 第Ⅲ部分:设计商业智能报表
● 第Ⅴ部分:解决方案模式
● 第Ⅶ部分:Reporting Services自定义编程
系统工程师或DBA
Bob是一位网络工程师和数据库管理员。与报表的美观和功能相比,他更关注公司服务器的安全和稳定。他希望确保为报表管理人员、设计人员、开发人员和用户分配不同的角色,并保证报表服务器的安全。Bob需要安装报表服务器和使用不同选项来配置报表服务器。他还需要安排维护任务计划,优化数据库及查询,并提供不间断的维护和灾难恢复:
Bob认为以下部分内容对他来说最有意义:
● 第Ⅰ部分:入门
● 第Ⅴ部分:解决方案模式
● 第Ⅵ部分:管理Reporting Services
业务领导
作为业务人员、公司经理或项目经理,你既可以是报表解决方案的消费者,也可以是开发工作的指导者。你可能采用了某个商业智能咨询公司的服务来构建一个决策支持系统,并用来协助运行公司的业务。你需要了解可以使用的选项,掌握产品和用来创建解决方案的技术概念。本书将帮助你理解这些特性,并将解释将其应用于实践所需的选项。解决方案的实现人员将向你询问业务需求和需要实现的功能。第1章和第4章可以作为很好的入门教材。你可能对本书第III部分“设计商业智能报表”很感兴趣,因为这部分内容能够为应用于业务分析的报表场景类型提供指导。第V部分,“解决方案模式”,讨论了如何定义和管理报表解决方案、业务需求和规范。这部分内容可以作为你、业务用户与报表设计人员之间的沟通媒介。
本书涵盖的内容
本书分为7个部分:
● 第Ⅰ部分:入门
● 第Ⅱ部分:报表设计
● 第Ⅲ部分:设计商业智能报表
● 第Ⅳ部分:启用用户报表
● 第Ⅴ部分:解决方案模式
● 第Ⅵ部分:管理Reporting Services
● 第Ⅶ部分:Reporting Services自定义编程
第Ⅰ部分:入门
第1章“Reporting Services介绍”描述了Reporting Services的功能和特性。你将学习Reporting Services的可扩展架构,正是这种可扩展架构使得Reporting Services能够对几乎现有的全部业务系统进行强大而又灵活的扩展。该章是后面学习设计、部署、管理商业智能和报表解决方案的基础,也可能是定制化商业智能和报表解决方案的基础。你将学习报表用户配置、报表应用程序和解决方案类型。该章还介绍了为SQL Server 2012新开发的报表设计工具。包括SQL Server Data Tools 报表设计器和报表生成器。
第2章“Reporting Services安装和架构”将帮助你安装Reporting Services,还解释了一个完整的报表解决方案的架构。该章将一步步地指导你建立自己的开发环境和规划企业部署。该章还将帮助你理解Reporting Services使用的核心服务和技术。通过学习产品如何工作和组件如何交互,可为设计和维护一个可扩展解决方案打下更好的基础。
第3章“配置SharePoint集成”可以用来集成Reporting Services与SharePoint。你将学习到如何安装和配置所有集成的组件。如果你不打算在SharePoint集成模式下使用Reporting Services,而是打算在Native部署模式下使用Reporting Services,那么可以略过该章。
第Ⅱ部分:报表设计
设计报表既可以是一个通过运行向导即可轻松完成的过程,也可以是一个定义了高级特性的、高度复杂的开发过程。你将学习用报表如何处理和填充数据,还要学习如何使用参数和表达式来定义具有创新性的报表解决方案。
第4章“基本报表设计”首先介绍了基础知识,讲解了如何使用简单的设计工具创建基本报表。你将学习使用报表向导和常用的报表设计器特性构造基本报表所需的基础知识。你还要学习报表设计的基础构造块,包括报表项和报表布局属性。该章描述了用来创建标准报表的两种报表设计工具。报表生成器面向的用户是那些希望使用简单直观的报表工具设计基本报表的用户。SQL Server Data Tools则可以帮助你管理报表项目,还可以帮助你在Microsoft Visual Studio开发环境中设计报表。
第5章“报表布局和格式化”关注不同的报表设计布局和用来组装报表的组件。该章描述了报表体、报表页眉、报表页脚和页面格式化属性。你将学习每一种报表项的功能,还要学习用于组织和展示数据的数据范围组件(data range component)。在学习了基础知识后,你将学习如何分组数据、列表与数据区(data region),还有如何使用表格和矩阵报表,以及通过报表来定义钻取报表,你还将学习如何使用图表。你还要学习如何编写表达式和自定义代码对格式化进行扩展和应用业务逻辑,以及如何为移动设备设计报表。
第6章“设计数据访问”揭示了报表都是基于一个数据源设计的,Reporting Services可以用来对来自多个不同数据源的数据进行展示。你将学习如何定义独立数据源和共享数据源,还要学习查询和数据集,以及如何使用参数对数据库和报表服务器中的数据进行筛选。你将学习新的参数功能,这些参数功能是在最新版本的产品中引入的。该章提供了T-SQL查询和存储过程的入门知识。你还要学习如何使用Analysis Services和MDX查询生成器构建报表。该章针对Oracle PL/SQL、Sybase,以及Access SQL方言提供了查询示例。
第7章“高级报表设计”通过介绍如何创造性地使用数据分组和报表项组合将设计元素提升到一个新的层次。通过使用简单的编程代码,可以添加计算和条件格式化功能。无论你是一位应用程序开发人员还是一位报表设计人员,该章所包含的重要内容都可以帮助你设计报表,使报表不仅能够满足用户的需求,还能够利用引人入胜的报表特性提升报表的水平。
第8章“图表报表”既关注简单图表可视化,也关注高级图表可视化。你将学习到如何用多种图表表达方式对值进行分组和聚集。该章介绍了可以用来在不同场景下表示不同数据类型的图表。我们还将学习几种很罕见的图表功能和图表属性,如果你需要创建更高级的可视化报表,那么可以使用这些功能和属性。
第Ⅲ部分:设计商业智能报表
第9章“BI语义模型”介绍了SQL Server 2012引入的一个新主题和一组新功能。该章用简单的术语解释了这些选项和技术,澄清了各种选择和最佳解决方案。
第10章“使用Analysis Services编写报表”讨论了基于多维数据集和数据库编写报表所具有的优势和存在的独特挑战。你将学到MDX查询设计的基础知识,还将学习如何在报表设计器中使用多维数据集数据。
第11章“OLAP报表高级技术”关注的是基于多维数据集数据编写报表所使用的设计技术和独特的最佳实践。你将学习如何使用参数、计算和聚集来创建MDX查询。你还要学习应用高级报表设计模式和技术来构建一个动态的多维数据集浏览器。
第Ⅳ部分:启用用户报表
第12章“表格模型”使用PowerPivot和SQL Server 2012中的企业级表格模型介绍了语义建模。你将学习表格模型的基本使用方法和应用方式,从而能够执行内存聚集,对来自不同数据源的数据进行建模,定义关系,使用DAX进行计算,还能使用层次结构和KPI。
第13章“使用Power View进行可视化分析”描述了Power View,这是一种简单而又强大的用户报表工具,它可以用一种语义模型对信息进行可视化展示。你将学到如何通过浏览信息来回答关键业务问题并从一组数据中获得结论。对于那些掌握了Power View工具同时又懂得一种语义模型和工具的核心机制的用户,可以创建令人信服的报表,并且能够通过形象并具有良好交互性的界面很好地展示业务。
第14章“报表生成器解决方案策略”指导你如何使用报表生成器设计工具,该工具可以用来启用用户自助报表编写场景。在完成必要的准备和计划之后,报表生成器设计工具可以帮助用户自行完成报表构建工作。你将学习到如何教会用户使用这项工具为数据生成报表。你还将学习如何为用户提供支持,对用户进行培训使之能够使用这项工具回答问题,并使用共享数据源、共享数据集和报表部件等共享组件来构建自己的报表。
第Ⅴ部分:解决方案模式
第15章“管理报表项目”将帮助你规划和管理不同规模的报表项目。你将学习到如何在只有一个或几个报表设计人员的项目中维护小型报表项目,还要学习如何在一个包含了开发者和报表设计者的团队项目中管理大型的正规报表项目。我们将讨论在SharePoint中使用报表生成器来管理业务用户报表的策略,还要讨论在集成版本控制和团队协作的情况下使用SQL Server Data Tools的策略。
第16章“报表解决方案模式和要点”介绍的设计模式来源于我们多年的解决方案设计。我们将理论和实践进行了区分,讨论了行业内其他人同样能够有效应用的最佳实践和技术。还讨论了如何根据用户和业务的需求来建立标准和实践。
第Ⅵ部分:管理Reporting Services
报表服务器管理是一项重要的任务,这项任务需要确保数据的安全,只有那些授权用户才能访问数据。通过对服务器端的报表进行配置并进行安全设置,可以优化性能并为相应的用户团体提供相应的数据。第13章和第14章介绍了如何使用必要的工具对报表服务器进行配置和管理。
第17章“内容管理”将指导你如何使用管理工具和Reporting Services功能来发布报表、管理报表执行和传递。你将学习如何创建自动化脚本和自定义解决方案来管理报表服务器的全部内容。你要从管理员的角度重新审视报表执行的步骤,并学习如何优化。你还要学习如何实现自动化的报表传递和服务器管理。
第18章“将报表与SharePoint集成”指导你如何同时使用Reporting Services和SharePoint来创建业务解决方案。无论你是在SharePoint集成模式下配置Reporting Services,还是在Native部署模式下配置Reporting Services,你都可以通过Web部件嵌入报表内容。你还将学习到如何利用集成模式功能使报表编写成为业务团队协作文化中的一个无缝组成部分。
第19章“Native模式服务器管理”是一部综合性的管理员指南。针对Reporting Services,该章将探讨报表需求和部署场景的相关注意事项。你还要学习使用配置工具和应用程序,学习备份和恢复过程,以及针对可能出现的问题和性能优化,如何监视一个Reporting Services实例。
第Ⅶ部分:Reporting Services自定义编程
在实际使用过程中,Reporting Services所有的内置功能都可以自动化,并可以通过自定义程序代码执行。这些功能包括报表呈现和报表环境的核心服务,即数据访问、呈现格式、安全性以及传递(delivery)。
第20章“将报表集成到自定义应用程序中”指出,Reporting Services是一个灵活的报表工具,可以很方便地集成到不同的应用程序中。该章你将学习如何使用URL,通过文档和Web页面链接来访问报表,还将学习如何使用Reporting Services Web服务以可编程的方式呈现报表。你还要使用ReportViewer控件将报表嵌入到自定义的Windows Forms和ASP.NET Web Forms应用程序中。此外,你还要学习使用SharePoint的Web部件及其他技术在Web门户中显示报表。你可以使用编程方式进行呈现,还可以使用URL进行呈现,甚至可以使用ReportViewer控件来创建自定义的报表查看器和参数接口。该章提供了C#和VB.NET示例。
第21章“使用嵌入代码和引用代码”展示了为报表添加自定义逻辑的技术,这项技术需要使用应用程序代码,而这些代码是包含在一个报表中或包含在一个外部引用的程序集组件中的。无论使用哪种方法,你都可以使用编程技术添加自定义行为,并启用高级报表功能。
第22章“扩展Reporting Services”是为那些认真的应用程序开发人员编写的。该章使用了面向对象编程技术,提供了C#和VB.NET代码示例。在该章,你将学到如何通过创建自定义的库和自定义的扩展来为报表和报表服务器的特性添加功能。这些扩展可以用来访问不同的数据源,以特定的格式呈现报表,对用户进行身份验证,还可以不使用产品提供的默认方法完成传递报表的工作。
附录
附录描述了T-SQL语法、变量、函数,还提供了MDX语言功能和参考。
为什么需要使用本书
大多数较新的业务级计算机都可以满足设计和运行SQL Server 2012和Reporting Services的软硬件要求。某些与SharePoint集成在一起的特性和功能需要更高的配置,包括软硬件。自定义编程示例需要安装任意一个版本的Visual Studio 2010。
针对运行SQL Server 2012,微软公司在MSDN库中给出了软硬件要求,具体请参考网址http:// msdn.microsoft.com/en-us/library/ms143506.aspx上的内容。安装和配置一个SharePoint BI环境是一个复杂的过程,需要特定的硬件支持。针对运行SharePoint、PowerPivot、Power View以及在SharePoint集成模式下运行Reporting Services,微软公司给出了运行环境要求,具体请参考网址http://msdn.microsoft. com/en-us/library/ee210640.aspx上的内容。
● 为了使用本书介绍的全部高级功能,推荐使用企业版和开发版。你可以从微软网站www. microsoft.com/sql下载评估版的SQL Server。
● 使用标准Reporting Services报表的报表设计示例在任何一个版本的SQL Server 2012中都能够正常工作,并且可以在满足最低配置要求的计算机上运行。
● 第11章和其他章节中使用的示例需要使用在多维存储模式下安装的SQL Server Analysis Services。SQL Server Analysis Services是SQL Server安装过程中的一个安装选项,并且是在完整安装一个SQL Server的过程中一并安装的。
● 第13章和第14章介绍SharePoint集成和Power View,要求安装SharePoint 2010 Enterprise版。
● 在报表设计器外部执行的自定义编程示例需要一个单独安装的Visual Studio 2010。第20~22章介绍了此项内容所需的材料。
● 在示例和练习中使用的示例数据库可以从www.wrox.com网站上随本书的示例项目一同下载。此外,还可以获得其他资源。
● 完整的示例源代码可以从我们的Web网站www.wrox.com下载。针对编程示例,下载时提供了Visual Basic .NET 代码和C#代码。
为了模拟一个多服务器的服务器环境,一种有效的方法就是使用虚拟机映像。为了测试和评估其开发的工具,微软公司通过使用预配置服务器安装提供了虚拟映像。这些内容往往包含在使用时间上有限制的软件。如果需要了解有关支持材料,请在www.wrox.com查看与此有关的最新信息。
本书的约定
为了帮助你更好地使用本书内容并掌握当前阅读内容,本书使用了一些特殊的表示法。
在本书中,我们使用两种方式来表示代码:
本书大多数情况下都使用monofont字体表示代码示例。
表示代码示例时,如果代码在上下文环境中特别重要,那么将用加粗的字体强调这段代码的重要性。
源代码
当你在完成本书的示例过程中,既可以以手动当时输入所有代码,也可以使用与本书配套的源代码文件。书中所有的所有源代码都可以通过www.wrox.com或www.tupwk.com.cn/downpage下载。在访问该网站时只需要找到本书的标题(可以通过Search框或者标题列表来查找),然后单击本书详细资料页面中的Download Code超链接来获取所有的源代码。其中包含在Web网站的代码用下面所示的图标来突出显示:
程序清单中包括了相应的文件名。如果仅仅是一个代码片段,那么在代码注释中将会看到下面所示的文件名:
代码片断文件名
在下载了代码后,请用你所喜欢的解压缩工具进行解压。或者也可以访问Wrox主下载页面来查看本书或者其他Wrox书籍的代码。
勘误表
尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
请给wkservice@vip.163.com发电子邮件,我们就会检查您的反馈信息,如果是正确的,我们将在本书的后续版本中采用。
要在网站上找到本书英文版的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/ misc-pages/booklist.shtml。
P2P.WROX.COM
要与作者和同行讨论,请加入p2p.wrox.com上的P2P论坛。这个论坛是一个基于Web的系统,便于您张贴与Wrox图书相关的消息和相关技术,与其他读者和技术用户交流心得。该论坛提供了订阅功能,当论坛上有新的消息时,它可以给您传送感兴趣的论题。Wrox作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题。
在http://p2p.wrox.com上,有许多不同的论坛,它们不仅有助于阅读本书,还有助于开发自己的应用程序。要加入论坛,可以遵循下面的步骤:
(1) 进入p2p.wrox.com,单击Register链接。
(2) 阅读使用协议,并单击Agree按钮。
(3) 填写加入该论坛所需要的信息和自己希望提供的其他信息,单击Submit按钮。
(4) 您会收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。
加入论坛后,就可以张贴新消息,响应其他用户张贴的消息。可以随时在Web上阅读消息。如果要让该网站给自己发送特定论坛中的消息,可以单击论坛列表中该论坛名旁边的Subscribe to this Forum图标。
关于使用Wrox P2P的更多信息,可阅读P2P FAQ,了解论坛软件的工作情况以及P2P和Wrox图书的许多常见问题。要阅读FAQ,可以在任意P2P页面上单击FAQ链接。