SQL_Server_2005报表服务高级编程(第二章).docx_第1页
SQL_Server_2005报表服务高级编程(第二章).docx_第2页
SQL_Server_2005报表服务高级编程(第二章).docx_第3页
SQL_Server_2005报表服务高级编程(第二章).docx_第4页
SQL_Server_2005报表服务高级编程(第二章).docx_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章 Microsoft SQL Server报表服务2005简介 162.1 传统的应用程序报表 172.2 当今的报表需求 172.3 定义的商业智能 182.4 场景解救自动化系统 192.5 现有报表解决方案的挑战 202.6 SQL Server报表服务如何面对挑战 212.7 商业智能解决方案 222.8 谁使用报表,为什么使用 222.8.1 执行领导 232.8.2 经理 232.8.3 信息化员工 232.8.4 客户 232.8.5 制造商和合作伙伴 242.9 报表解决方案的替代品 242.9.1 关系数据(OLTP)报表 242.9.2 关系数据仓库 252.10 报表生命周期 262.11 报表交付应用程序类型 262.11.1 Web浏览器 262.11.2 Office应用程序 272.11.3 可编程性 272.11.4 订阅 272.11.5 报表格式 282.11.6 导入/交换数据 282.11.7 即席报表 282.12 系统需求 282.13 报表服务组件 302.13.1 服务器组件 302.13.2 客户组件 302.13.3 获得联机图书的帮助 302.13.4 Adventure Works示例数据库 302.14 管理工具 312.14.1 命令行和无人参与安装 312.14.2 日志文件 312.15 设计报表 312.15.1 窗体报表 312.15.2 表格报表 322.15.3 分组和下钻 322.15.4 钻取报表 322.15.5 多列报表 322.15.6 矩阵 322.15.7 图表 322.15.8 数据源 332.15.9 查询 332.15.10 OLAP报表 332.16 使用Business Intelligence Development Studio 342.16.1 报表向导 342.16.2 .NET Framework 342.17 扩展报表服务 352.17.1 数据处理扩展 352.17.2 交付扩展 352.17.3 安全扩展 352.17.4 显示扩展 352.17.5 脚本 362.17.6 订阅 362.17.7 安全报表 362.18 报表管理器 372.18.1 设计报表 372.18.2 通过URL访问报表 382.18.3 用程序代码显示报表 382.19 报表定义语言 392.19.1 部署报表 392.19.2 设计和架构报表解决方案 392.19.3 第三方产品集成 392.19.4 Panorama企业报表器 402.19.5 用于报表服务的ProClarity 402.20 小结 40第2章 MS SQL Server2005报表服务简介2.1 传统的应用程序报表SQL Server 报表服务(SSRS)2005是在Microsoft第一次发布的报表平台上扩展而来的。在2003年,Microsoft发布了报表服务,作为SQL Server 2000产品套件的一部分。报表服务本来要作为整个SQL Server 2005发布的一部分,但是,报表服务开发团队发现有一个机会可以提前推出这个产品。值得赞扬的是,这次发布非常成功。报表服务已经成为第一个版本就被广泛使用的Microsoft产品之一。这也意味着,它还是产品的首个版本,还有推敲和优化的空间。开发团队按照优先级从一个长长的“愿望列表”中选择功能。这个列表包括本质的、非本质的、甚至一些不会在最终产品中出现的功能。这个列表中的增加项将在推出每个新版本和服务发布时加入进来。本章中将会介绍: 访问数据和交付报表的新方法,它是报表服务平台扩展体系结构的一部分。 报表是如何存储在一个简单的、可移植的报表定义扩展标记语言(XML)文档中的使用一个称为RDL的标准。 报表服务可以完全可靠和高度可定制。报表可以通过使用报表管理Web界面管理和查看,或者使用提供的报表查看器或自定义的视图内嵌到定制的应用程序中。 大量的交付选项,包括定时的订阅,允许用户通过文件或者电子邮件接收报表。报表内容可以用不同的方式缓存以提高性能和保留服务器资源。在2000年产品发布时,Microsoft花费了大量时间来保证正在进行中的平台是可扩展的、可伸缩的、结构良好的。我相信从长期使用这个产品的观点看来,这是正确的决策。聚焦到平台上,确实需要将一些最终用户的功能推迟到下次发布。我们在SSRS 2005中所看到的功能是用户广泛要求加入的一些主要功能。这些包括可以多选的参数、可排序的标题以及大量的用户功能增强。主要的改进出现在新的报表生成器应用程序。报表生成器允许用户通过一个友好的、类似Microsoft Office的界面来很容易地创建他们的报表。如果读者对.NET Framework、Web 服务、SQL Server以及ASP.NET的功能印象深刻,应该知道通过这些技术报表服务将访问数据的能力提高到一个新层次。Microsoft实现了它的承诺,使得可以“在任何时间、任何地点、通过任何设备”获得信息。报表可以使用定制的视图格式和页面大小来支持移动设备。有其他一些报表工具也有使人印象深刻的功能,但是没有一种比得上这个工具。本章将介绍几个主题,这些主题在本书的后面部分将会详细介绍。这里将为读者提供一个SQL Server报表服务的需求和目的、能力和机制的高层次的观点。2.1 传统的应用程序报表在很多商业应用程序中,报表是最后添加的事物。在设计系统时,总有大量的时间花费在工作流、数据元素和用户界面上。系统要用大量时间去设计、构建、测试和部署。最后,很多公司选取了一个适合采集信息和提高生产率的工具。然而,报表总是得不到足够重视。人们总是将报表看作一个简单的、相对容易完成的附属物。真实情况是,好的报表同样需要对初始的应用程序做扎实的规划和设计。报表设计者需要清楚地定义用户在寻找什么、他或她会怎样使用报表、多久会使用一次。如果没有合适的规划,查询将变得复杂和难以维护。报表运行缓慢并容易产生错误。为了避免这些麻烦,报表设计者需要一个规划。在一个完美的世界里,设计者要围绕报表需求去设计数据库的体系结构和应用程序,在设计系统之前要完全了解用户的需求。而在现实世界中,设计者可以提前了解一些用户需求,但是用户经常在其他一些功能已经完成之后才产生新的报表需求。Frederick P. Brooks在人月神话中提到,在任何设计中从前几次尝试中吸取教训并且丢弃它们,这是一个不错的主意。通常分阶段设计报表,初次尝试将会是一个原型系统。我的经验是当报表设计者积累初始需求时,用户会要求提供一些符合特定要求的不同报表。在解决方案已经实施,用户开始使用之后,其他人几乎不可避免地意识到把报表作为助手也会使他们的工作变得轻松。当用户意识到他们能得到哪些不同的信息,他们会发现新的、令人激动的方法来对数据排序、筛选、分类以及建立基准数据、对数据进行分片和分块,这些方式他们以前从来没有想过。现在,是报表设计者为他们提供了实现这些的可能性。2.2 当今的报表需求静态的、打印的报表对于一个产品和价格列表或者对于一个公司来说是一种可以接受的格式,但是对于当今需要做出重要决策的大多数信息化时代的用户来说是不能接受的。要做出商业决策的人需要相关的信息,他们需要以适合他们角色和责任的方式来查看报表。因为很多用户以稍微不同的方式处理信息,报表设计者可以建立成百上千的报表,为每个特定需求建立一份报表。另外一种选择是,报表设计者可以建立灵活的报表以满足很大范围内的用户需求。比如说,一份销售总结报表可以按照销售员的地区或者客户类型来分类和筛选,包括每年、每季度、每月或每周的信息或者一个特定产品目录的信息。为每一个这样的需求产生一份报表将会非常耗费时间和开销。除此之外,计算机用户比他们几年前更为聪明,他们需要一个工具来帮助他们做出决策,而不是仅仅提供数字给他们看。我还记得几年前在Hewlett-Packard(惠普)工作时,我在与制造业有关的IS组。每个周四都会收到一个报表卡片。上面有以一周和一个月为基础的主框架系统产生的几个常规的定时报表。用户,一般是部门经理,将会订阅这些报表。报表在另外一个大厦中打印,然后人工送到每个订阅者手上。这些报表中很多只是大量的数据列表和一些打印在连续的复写纸张上的文本,有的达500页之多。我观察到好奇的经理们会小心翼翼地翻阅一下,做上标记或者在自己感兴趣的地方画圈。有些甚至将它们装订成册,交给他们的行政助手,用一个10位的计算器将他们标出的数字都加起来。到了月底装满这些报表的废物容器被运到垃圾处理和回收中心,这些报表的用处很快就没有了。我使用Microsoft Access 花了将近两年时间为这个组开发了一个报表应用程序。我们开始在这个应用程序中规划了810个报表。但是随着时间的推移,用户开始依赖报表去执行他们的工作,他们要求用同样的报表来处理不同的排序、分组和选择基准的工作。最后,我们开发了2530个报表,其中大多数是在开始的几个原始报表上修改而成。2.3 定义的商业智能前面一节讨论了在应用程序中加入报表的重要性。报表可以回答大量的商业问题,但它只代表我们称为商业智能(BI)的一部分。BI现在已成为非常流行的工业用语。和其他的工业用语类似,它的实际意义总有很多混乱的说法。所以,我们需要澄清一下BI实际上是什么含义。对于我们来说,BI是一种能力,它可以收集信息、对信息做一个判断、以及在设计者的商业中实施一个改变,然后衡量改变后的效果。图2-1中显示了BI的循环周期。图 2-1商业执行官们理解为什么拥有好的数据是重要的。他们解释说好的数据能帮助他们做出正确的决策,正确的决策意味着成功的商业。这很合情理,不是吗?如今一个非常常见的场景是想要做最好的商业,需要投资昂贵的企业资源规划(ERP)系统,这个系统可以有效地采集和存储大量的顾客、产品、以及销售信息。做到了吗?没有!在如今,得到数据和使用数据的时间间隔很短,几乎是瞬间。更为有效的数据采集技术导致了数据井和数据仓库的出现,它们由各种不同事实汇入而成。新一代的商业工作者的方式是获得信息,做出决策。他们需要工具来获取有用信息、及时响应变化。仅仅获得数据是没有用的,除非它们包含商业价值,可以用于有效地做出决策。商业中的一个基本事实是采集数据的人通常不是使用数据或者需要获得数据所代表的信息的人。商业执行官、经理和分析家每天做出战略决策,可能会影响到很多人以及公司的指导方向,最终影响工业社会中人和机构从事商业的方式。这些决策很大程度由一个图中的一个柱体的相对高度或者打印在一页纸上的几个数字所驱动。拥有强大的报表工具就不需要解决这个问题。很多商业人员并不知道如何有效地使用他们拥有的产品。一个报表工具如果太复杂和难以使用,那么它就没有什么价值。这就意味着存在一些基本的挑战,比如采集全面的、准确的和有意义的数据;用一种样式存储从而它可以连续表达事实;以一种精确的、无偏的形式来表示信息。在表面上,看起来像一件简单的任务。2.4 场景解救自动化系统我将为这种挑战举一个例子。几年前,我用了几个月时间为太平洋西北部的一个纸厂的操作组开发一个报表系统。这个古老的工厂位于一个遥远的小镇,很多纸厂的员工已经在那里工作了一辈子。正如纸浆和造纸工业中常见的一样,这个工厂已经几度易主,现在由一家非常大的纸业和办公供应公司所运作。随着时间推移和技术变化,一些不同的计算机系统集成到纸厂运作中;一台IBM 360和一个AS/400的系统用来管理客户订单和产量历史记录。原始的存货管理系统没有变。这是一台非常古老的、用于特定目的的计算机,用一个单一的文本格式来存储它的很多数据。它的所有组件都是冗余的,并且从来不需要重大维护。在我到达之前,安装了一个Windows Server套件,包括了一个SQL Server数据库和一个从现有数据库系统复制产量和存货数据的应用程序。总公司的管理层认为他们对原材料消耗率和产品质量缺乏管理。他们想要一个报表系统,给他们显示所需要的数字,来做出对订单和纸浆生产过程的调整。随着时间的流逝,将会产生不同级别纸浆的订单。系统需要计算所需成份的数量来生成一批一般是满足一个客户的订单要求。订单将会送到生产间,员工们有新安装的控制设备,用来确保纸浆成份的准确运送。不同批次的产品以不同级别的质量不断生产,管理层跟踪这些材料消耗的能力不能得到显著改善。管理层在报表解决方案上不断进行投资。他们购买了已开发的软件来了解趋势和进行数据分析,但是徒劳无功。经过了几个月时间和几十万美元的投资之后,产品质量仍然没有真正提高很多。最后,其中一个IT经理戴上安全帽,走到产品间去观察整个过程。他了解到的只是一个简单的教训:当订单到达他们的计算机工作站时,员工们正在打印和整理订单。他们抛开自动化的控制设备,仍在使用过去几十年来一直使用的上一代的人工造纸技术。这大概是因为传统和尊严,他们不打算让计算机代替他们的工作。开始的报表解决方案是优美的而且在技术上可行的。计算是准确的,而且报表的显示方式也合适。但是,这个方案并不完全支持这个过程。最终需要克服文化上的障碍(如果员工想保住饭碗,要求他们必须使用自动系统),产品和过程都得到改善。一个报表仅仅和它表示的数据一样,而数据仅仅和采集的信息一样。信息仅仅和它所代表的过程一样。2.5 现有报表解决方案的挑战在过去十多年,Microsoft仅仅提供了一种拥有足够报表功能的产品。作为专为单个用户或者一个小工作组使用的桌面应用程序,Microsoft Access是一个有能力的数据库和报表解决方案。在Access 2000中,加入了Access数据项目。这个产品的扩展在一个局域网的环境下,以SQL Server为后台,可以很好地工作。在Visual Studio 6中,提供了一个Visual Basic 6的集成报表工具,但它的容量最多只能达到兆的级别。这时的开发人员认为这只是Visual Studio后续版本的一个简单预览。因为对于报表缺乏一种统一的、连续的报表方案,很多开发人员被迫转而开发他们自己定制的解决方案。一个恰当的例子是在ASP.NET开发支持网站()上已经有了报表开发的项目(Reports Starter Kit)。开发人员做了一件令人震动的工作,使用ASP.NET的数据网格和数据列表控件创建一个基于Web的报表解决方案。他们甚至使用画线对象来做自己的饼状图。这有效证明了.NET是一个非常强大的编程工具。但是,它也说明了我们缺乏一个强大的报表平台来补充Microsoft的第一线开发和数据库套件。在Visual Studio.NET在2002年发布时,我有一些失望,因为唯一集成的报表组件是一个限制用户数的水晶报表(Crystal Reports)。现在,在我遭到这个产品的忠实用户的反对之前,我必须说水晶报表是一个功能强大的报表工具。但是,它既不属于Microsoft的战略方向,看起来也不像Microsoft的产品或者和Microsoft的产品紧密结合。在Visual Studio上安装的水晶报表的版本只限于5个并发用户(术语并发(Concurrent)有一些严格的解释)。现在水晶报表已经再次易主(被Business Objects收购),看看这将如何影响这个著名产品的方向,这是非常有趣的。特别地,过去几年中工业领域最显著的变化是在Internet上交换信息的机会和需求。以前的技术都简单地不提供访问Internet上的应用程序组件的方法。组件架构如COM、DCOM和CORBA都设计用于在安全的局域网(LAN)和广域网(WAN)上通信,这就需要大量的基础设施投入。将商务贸易伙伴和平等的区域站点连接起来通常费用太昂贵并且逻辑上是不可行的。在Web上很少存在定制报表的选项。最好情况下,一个填满数据的列表或者表格可以按照用户定制的、服务器端的解决方案,使用活动服务器页(ASP)或者通用网关接口(CGI)。每一页必须精确设计和编写脚本,需要花费几十个,有时甚至上百个小时编程。随着最近Web的成熟,新一代移动设备发展起来,可以将用户和公司资源、电子邮件、文档和数据库连接起来。这些桌面的、手持的、掌上的甚至戴在腕上的设备为数据表示产生了新的机会和挑战。为了获得有用和可读的信息,数据必须在现有的通信通道(比如公司网络和Internet)可以获得、易于访问、安全和有不同的格式,可以在现有的文档阅读器或者浏览器中查看,兼容不同的设备。还记得我提到过需要支持不同的操作系统(OS),应用程序,也许,不用在客户设备上安装任何定制的软件?这些就是挑战。2.6 SQL Server报表服务如何面对挑战?SQL Server报表服务是服务器端的报表平台,满足所有这些需求甚至更多。它可以有不同的数据源,报表设计者可以使用现代的编程工具来访问这些数据源。数据可以分组、排序、聚合、以动态的和有意义的方式显示。数据和显示元素的结构实际上可以在任何通信媒体上传输,使用了工业标准的格式,根据任何类型的客户和服务器计算机或者设备上调整。结果内容可以使用浏览器和文档阅读器以多种标准格式显示。更进一步,数据本身可以用于标准和定制的应用程序来进一步分析、导入、操作和使用。这是真正非凡的革新,拥有令人难以置信的可能性。因为报表服务是基于.NET的,它有和Windows平台紧密结合的优点,在性能、可伸缩性和安全性上从.NET平台上受益良多。当和BackOffice产品比如SharePoint Portal一起使用时,它可以提供全面的企业解决方案,几乎不需要编程工作。报表服务可以和ASP.NET以及其他.NET编程工具一起使用,产生高度定制的、用于特定目标的解决方案。第3章讨论了定制的报表服务体系结构,用于体现所有这些神奇的来源。简单地说,功能通过一个XML Web服务来体现,这个服务可以通过一个LAN或者通过Web访问。报表可以以程序代码方式表示,或者像其他Web页面一样通过一个简单的Web地址访问。报表可以以几种格式显示。这些格式包括了不同风格的超文本标记语言(HTML)以提供和不同的浏览器和设备的兼容性、Adobe Acrobat便携文档格式(PDF)用于统一表示和打印、图形文件的方式、Microsoft Excel格式以便用户可以分片、分块、确定基准和重新分析数据。内容可以用XML和CSV(以逗号分隔值的格式)格式,从不同的应用程序中导入以及与之交换数据。2.7 商业智能解决方案传统上,BI解决方案花费很多,只有大型商业才能承担得起。特定的制造商很多年来已经有了客户关系管理(CRM)系统、联机分析处理(OLAP)系统(或者数据仓库)以及分析解决方案。但是,它们需要昂贵的部署、培训和维护费用。通过比较(这是我最喜欢的一部分),报表服务只需要在一台有SQL Server使用许可的计算机上安装即可,不需要额外的费用。在一个单一服务器上安装,设计者不需要额外的许可,堂堂正正地免费使用,只要有数据库和服务器产品的恰当的许可就可以一直使用下去。比较而言,收集数据是一个相对容易的部分。很多公司在过去几十年来一直在做这项工作,但是怎样利用所有这些数据是另外一个故事了。无庸置疑,有效地采集数据也许不那么容易,但是这是商业上已经做了很久的事情了。很多公司有数不清的以MB、GB甚至以TB计数的“重要”归档数据,保存在文档、电子表格和不同的数据库中,存储在后备的磁带、磁盘和文件夹中,遍布整个企业,不知道该如何利用数据和从中获得价值。迪斯尼用户交互组的Tommy Joseph说,“BI不仅仅是跟踪产品销量。它是关于通过数据分析来测量性能、发现模式和趋势以及重要的预报的。”一个有效的BI解决方案提供了对一个企业中各个级别的重要事实的可见性,使得人们可以使用熟悉的、易于使用的应用程序从不同的数据源获得一致的数据。它将应用程序、文档和数据源以一种让人们有效协作和通信的方式连接起来。BI系统不再是一种奢侈品,而成为很多商业环境的必需品。今天,及时获得信息可以成为是在竞争中领先和还是被抛在后面的关键。2.8 谁使用报表,为什么使用在几乎任何公司,有一个普遍的情况,不同的角色和级别的人对信息有不同的观点。这一般在大公司内非常明显,执行领导做出财政和市场方向的决策,他们没有一线员工更受公司的日常过程的影响。问一下任何执行官,他或她会认为一线员工没有一个关于高层次上公司的挑战和方向的观点。相反地,询问公司里的任何一线员工,他们会认为上层管理和执行领导不能分享他们对“实际问题”和公司的日常脉搏的看法。在每一点上,这是一个健康的公司的自然情况。Bill Gates已经对20世纪的“信息化员工”进行了广泛描述。在一个公司的各个级别上,能够方便获得准确和恰当的信息的人能够做出有益于公司和个人的见多识广的决策。这很快成为今天的工业的实际情况,继续改变人们工作和管理的方式。尽管这种模式变化发生在很多人身上,公司常常努力提供必需资源,来支持那些迫切需要使用信息来改变他们的环境的人员。2.8.1 执行领导简单来说领导们必须做出见多识广的决策。他们必须完全理解他们的商业环境和他们所操作的竞争氛围。对市场条件、客户需求、财务信息的访问经常导致不同决策做出能够获得成功还是危害公司的决策。决策支持系统通过称为“执行信息服务(EIS)”的指示板为执行领导提供了界面。报表服务安装了一个简单的Web界面,通过SharePoint Portal 服务和第三方解决方案的集成加强了和执行控制台的集成。2.8.2 经理低效率的商业过程不能保持现状。客户需求简单地导致了他们不能去容忍那些不能满足他们预期的服务或者产品。客户有选择权,如果他们的需求没有获得满足,他们会转而选择其他竞争者。经理们需要必要的信息来获得客户满意度,做出正确的、指导商业过程和有效使用人力和其他资源的决策。2.8.3 信息化员工如今的商业,员工受过教育,得到更多解决问题和改变结果的自由。这种分类可以应用到一个公司内部的不同级别的人员,包括经理和高级人员。经常地,客户服务代表或者服务提供商将会是一个客户和公司的唯一接洽者。那个人必须有能力快速和准确地收集和获取信息。他必须有能力对顽固的商业过程做出纠正,与这个过程协同工作而不是对立。在过去,员工们必须接受呈现给他们的信息,如同很多自动系统的低效率一样。随着商业需求越来越多,员工们简单来说必须拥有获得准确和精确信息的途径来满足要求,从而进行有效工作。2.8.4 客户很多商业不能在一个例行的基础上使人走到客户的面前。在没有保障的情况下,客户可以获得所需信息、服务和辅助,而不要求有人帮助他们。通过客户界面友好的、自动化的信息门户来进行常规服务,就有能力对真正需要特别注意的用户提供帮助。客户经常需要查询账户和交易历史、订单状态和运输信息。通过一个Web浏览器、电子邮件或者一个手机服务来提供这些服务可以获得更好的客户满意度。2.8.5 制造商和合作伙伴与客户一样,商业制造商需要和一个公司打交道,来安排订单、安排服务电话和获得状态信息。用非常合适的表格来提供这些信息将会提高效率,最终提高和制造商的伙伴关系。商业制造商通常更接受特别的过程和自动系统。制造商可以培训成为会使用更复杂的系统来获得产品信息、服务订单、发货单和其他商业相关信息。系统可以设计成为接口,自动下载或者交换信息,来和一个商业伙伴协同工作。2.9 报表解决方案的替代品下一节中介绍了一些常见的报表解决方案的代替品。这些替代品通常代表了一个公司的报表解决方案复杂度的演化。一般来说,公司通常以一些主要报表起步,使用一个OLTP(联机事务处理)系统。一旦遇到OLTP系统的局限性,他们把报表转化成为数据仓库。最终,他们需要更复杂的报表和交互活动。这通常导致一个OLAP系统的实现。我们将会看一下每个替代品以及他们各自的相对优点。2.9.1 关系数据(OLTP)报表事务数据库设计用来捕获和管理真实的数据正如数据产生时一样,比如,当购买产品时或者使用服务时。关系数据库根据范式的规则设计,一般有很多表格,每个包含数据的片断而不是完整的信息或者商业事实。这有助于在详细的层次上保持数据的完整性和一致性,但它面临从大量事务数据中获得有用信息的挑战。为了获得包含有意义的文本的信息,表格必须连接起来,数值必须聚合起来。对于简单的报表需求,这通常不是问题。举个发货单的例子。一张发货单是一个简单的报表。它显示了定制的信息和少量事务的细节。对于这种类型的报表,查询一个OLTP系统开销并不很大,查询相对直接。但是,当用户查询一年或者整个产品线的信息时,他们的目光最终要离开这些简单报表。开发这种类型报表将会最终耗费大量OLTP系统上的资源,同时需要更复杂的查询。虽然关系数据库可以支持复杂查询,但是这些查询对应的报表被证明是慢速和低效的。2.9.2 关系数据仓库我看见过很多公司把他们的OLTP数据演化升级。通常他们的第一步是在另外一个服务器上建立一个OLTP系统的副本。这缓解了原始系统上的资源限制,但这不能解决复杂查询的开销问题。简单地这是因为OLTP系统不是一个逻辑上的报表结构组织的。为了处理增加的报表需求,整个工业演化为简单处理报表。从工业上看,一些人比如Ralph Kimball已经定义了标准模式和方法学,进而开发数据仓库。一个常见的概念错误是一个数据仓库只是一个非规格化的事务系统。实际上,一个数据仓库是另外一种关系数据库的形式,它以一种与报表友好的规则组织。数据以一个“事实”表为中心。一个事实表和一个商业过程相关,比如订单或者登记。从事实表发散出去就是维度表。维度表包含了进一步定义事实的属性。这些属性可以包括产品名称、地理销售位置以及时间和日期信息。关系数据库可以显著提高大数据集上的查询性能。但是,它们也有相对的缺点。这些缺点一般和仍然以关系的方式存储数据有关。关系数据库需要连接来进行组合查询。它们需要聚合函数来计算总量级别的细节。连接和聚合函数都降低了在非常大的数据集上的查询速度。关系数据库也不能理解数据中的继承关系。举一个产品表的例子。每个产品表有一个相关的子目录,每一个子目录有一个相关目录。如果报表设计者需要创建一个产品销售的报表,要包括每个相关子目录的百分比组成,就必须理解它们的关系并写在查询中。对于时间关系也是同样。如果设计者需要创建一个包含从年到日的信息的报表,需要理解当前日期是多少,以及同一年的相关阶段是什么。这些事情在SQL查询中都能做到,但是需要更多努力,需要更多维护。这使得我们进入下一种类型的替代报表:OLAP。多维数据(OLAP)报表多维数据库采用了一种与关系数据库不同的获取和存储数据的方法。多维数据库以对象的方式存储,称为管道。管道相当于在设计者的底层数据库上加了一个语义层。这些数据库可以包括不同的关系和非常大的聚合数据的集合。作为一个多维数据库,信息可以在很多维度上聚合。这个数据已经预处理到多维结构中。因为经过预处理,对于大的附加数据集查询时间显著缩短。多维数据库也有可以理解维度之间和横跨维度的关系的优点。这打开了创建计算和报表之门,这在一个关系数据库中是非常困难的。想象一个用户邀请报表设计人员创建一个报表,显示他们今年销售量中最多的五个客户和最多的三个客户并同去年的销售量进行对比。写一个SQL查询语句来返回最多的五个客户是相当直接的。但是,返回每一个客户的最多的三个产品将需要额外的子查询,因为关系数据库不理解产品和客户之间的关系。需求的最后一部分更证明是一个负担。返回一年的数据是容易的,但是嵌入去年的数据证明是几乎不可能的。上面场景的SQL查询很可能包括大量的嵌套和一些临时表的创造性使用。除了一个可怕的复杂查询之外,很可能性能也不好。另一方面,多维表达式(MDX),用于查询多维数据库的语言,可以通过几个简单的调用处理这个问题,并不是因为MDX是一种更高级的语言,仅仅是因为下层的数据库理解了数据之间的关系并存储了这个信息用于快速获取。Microsoft已经对它的多维数据库产品称为分析服务做了主要改进。报表服务2005增加了分析服务数据库工作的改善。有一个新的查询设计器帮助设计者写底层的MDX。也提供了对创建报表模型的支持,允许对OLAP数据的随机访问。在分析服务2005中创建报表模型在第8章中将详细介绍。2.10 报表生命周期第3章中非常详细介绍了报表生命周期以及支持这个过程的体系结构。创建一个函数型的报表解决方案需要对用户和商业的理解。必须考虑现有的数据源,设计新的数据存储来满足报表需求。从这个观点来看,创建有用的报表的过程包括三个活动: 创作:使用现有工具,我们可以使用Visual Studio.NET中的报表设计器来创作报表。使用这个界面创建数据源、查询和数据集、以及报表定义。 管理:使用报表管理器来完成报表管理,这是一个Web浏览器界面,用于管理和部署报表定义文件、共享数据源和配置设置;它也能用于查看和输出报表数据。 交付:报表可以通过报表管理器或者一个定制的应用程序按照需求交付给用户;它也能通过订阅来定期交付。报表可以以一个Web页、文件甚至通过电子邮件来交付。2.11 报表交付应用程序类型在过去,报表解决方案通常通过一个某种类型的桌面应用程序交付。数据实时查询,当然应用程序必须连接到数据源。用户也有有限的机会来存储报表用于以后查看,经常在纸上打印出来。现在我们有了很多机会,在不太可能连接到数据存储的地方来查看以及与报表交互。报表也许以不同的形式表现出来,提供不同设备和软件上的兼容性和多种功能。2.11.1 Web浏览器基于Web浏览器的解决方案因为大量理由得到盛行。用户访问采用了一个全新的定义,在客户机上不需要安装特定的软件。当然,一个Web浏览器使得世界广域网内都可以查看信息,但是,基于浏览器的解决方案也是一个受控的商业企业环境下交付信息的引人注目的手段。不论用户通过公司的局域网环境还是通过Web访问资源,浏览器范型已经显著改变了应用程序交付的方法。浏览器解决方案的一些传统挑战是缺乏客户端的脚本和组件的一致性支持。这些问题已经通过服务器端的显示技术,输出与产品独立的HTML内容来解决。为了查看脱机内容,HTML需要和外部文件链接,如图片、声音以及视频。这些问题也通过使用多重目的因特网邮件扩展(MIME)编码格式来解决,称为MHTML或者Web包(Web Archive),在页面定义中封装了二进制的内容。虽然不是所有浏览器都支持,但这种格式是交付扩展报表内容用于联机和脱机浏览的可行方法。HTML 4.0工作在互联网和局域网上不同类型的计算机上,使用新的Web浏览器,而HTML 3.2使用旧的浏览器,工作在便携或者手持设备上。2.11.2 Office应用程序Microsoft Office给我们带来了大量的不同功能搭配来帮助不同级别的报表用户。Microsoft Excel已经是数据采集和分析的支柱工具。通过在Excel里显示报表,可以很容易地重新格式化、修改或者使用工具和计算来分析数据。这个功能已经在几年前就有了,但是它需要用Access或者Visual Basic编写特定的代码来使用Excel对象模型,来产生Excel中的报表数据至少这个过程是单调的。现在,将复杂的报表数据放到一个格式良好的Excel文档中是很容易的。Microsoft Access继续是办公工作者的数据库的选择。用最少的代价和努力就可以创建数据追踪和管理解决方案。报表服务可以用于交换和导入数据到Access数据库中,使用XML或者CSV的格式。Access和Excel都提供了Office Web组件,可以用于查看数据透视表和图。这些组件复制了Matrix和报表服务的图表的功能,但给了用户一个更方便的途径来分析数据。2.11.3 可编程性将报表功能集成到自己的应用程序中的可能性是令人印象深刻的。报表管理器的所有功能可以在很多情况下进行复制,可以通过程序代码扩展。报表可以使用一个外部的Web浏览器窗口、集成的浏览器控件或者定制的报表浏览器组件,在一个应用程序中查看。报表内容可以输出到一个文件中用于持久存储,而不是显示到查看器或者浏览器中。2.11.4 订阅订阅允许用户在一个规定的时间接收或者访问报表。报表通过电子邮件发送或者存到文件中,便于用户方便时脱机查看。报表订阅可以为一个用户、或者使用数据驱动的订阅为很多组用户建立。为了以后有效使用,实际上报表可以以任何可读的格式在任何地点任何时间发送给任何个人或者任何规模的组的用户。2.11.5 报表格式除了三种HTML显示格式,报表设计者可以使用文档类型来控制格式元素、打印布局以及增加其他功能。PDF文档格式仍然是保证文档是所期望格式的最流行的方法。在一个Microsoft Excel工作表中显示一个报表将赋予用户继续批量浏览数据和进行计算的能力。2.11.6 导入/交换数据并非所有“报表”都可以阅读或者打印。报表服务提供了两种报表显示格式,可以用于导出、导入和数据交换。或者使用逗号分隔值(CSV)格式、或者使用XML格式,报表服务提供了一种非常方便的机制,用于系统间数据交换或者为贸易伙伴输出数据。想象一下,自己的系统在每天结束时,通过电子邮件的附件中的XML文件自动给订单实施制造商发送发货单和运输单。2.11.7 即席报表报表平台的另外一个重要组件是用户容易地建立自己的报表的能力。报表服务2005的主要新功能是引入报表生成器。报表生成器由两个主要组件组成:报表模块和报表生成器客户端。报表模块允许报表设计者在SQL Server或者分析服务数据的上面建立一个语义层。这个语义层提供了一个易于理解的模型,便于用户浏览。用户创建报表并不需要理解怎样查询下面的数据库。报表生成器给了用户一个易于使用的界面用来创建报表。报表生成器客户端将报表模型转化为容易创建结构化的报表。第8章和第9章将会讨论如何创建报表模型和如何使用报表生成器来访问数据。2.12 系统需求报表服务的硬件系统需求和SQL Server非常类似。默认的安装将会把报表管理器、报表服务、报表服务器数据库安装到同一个物理服务器上,但这种配置不是必需的。这些组件可以分别安装到三个服务器上面。报表服务和报表管理服务器必须运行Internet信息服务(IIS)5.0或者以上版本和ASP.NET,以及.NET Framework 1.1或者以上版本。报表服务器数据库需要安装SQL Server 2005的任何版本之一。报表服务的版本对应于SQL Server 2005的版本,包括企业版、标准版、工作组版、开发者版和快速版。类似SQL Server 2005,标准版是对于单一服务器环境和数量适中用户的一个好的解决方案。表2-1列出了每个版本的SQL Server 报表服务2005的功能(可以参见www.microsoft. com/sql/2005/productinfo/rsfeatures.mspx)。表2-1 功能快速版工作组版标准版企业版评注数据源快速版1、2工作组版1、2标准版和企业版支持所有数据源(OLAP和关系数据)显示Excel、PDF、图形(RGDI、打印)、DHTMLExcel、PDF、图形(RGDI、打印)、DHTML标准版和企业版支持所有输出格式管理报表管理器工作组版、标准版和企业版支持SQL Server Manager Studio和报表管理器缓存历史交付调度可扩充可以添加/删除显示格式、数据源和交付定制认证SharePoint集成扩大报表服务器订阅数据驱动的订阅基于角色的安全固定角色固定角色标准版和企业版可以增加角色报表生成器报表生成器数据源工作组版1、2模型级别安全性无限的Click through(通过单击进入下一个链接)(译者注:根据Microsoft网站,表中的“1”指仅本地服务器,“2”指仅关系数据库)2.13 报表服务组件下一节将对不同的报表服务组件进行广泛的浏览。我们将会讨论一些主要的服务器组件,然后讨论客户端工具,最后看一下帮助和创建样例的选项。2.13.1 服务器组件服务器组件包括报表服务器和报表管理器。组件包括了一个在服务器计算机上连续运行的Windows服务、一个以IIS为宿主的.NET Web服务和两个SQL Server数据库。报表服务每个物理数据库服务器计算机可以只安装在一个SQL Sever实例上。数据库不需要驻留在本地服务器计算机上,但是服务器必须是一个Windows域的成员或者是一个域信任的服务器。报表服务器是一个ASP.NET应用程序,通过一个Web浏览器界面来显示报表、进行配置和管理功能。报表服务器需要IIS 5.0或者更高版本在报表服务器计算机上运行。.NET Framework版本1.1也必须安装在服务器上。这是Windows Server 2003的自带功能。在一个Windows XP专业版系统中,服务包1(SP1)是必需的。Windows 2000专业版、服务器版和高级服务器版需要SP4。不支持Windows XP家用版。2.13.2 客户组件客户组件包括SQL Server Management Studio和Business Intelligence Development Studio。SQL Server Management Studio是所有SQL Server产品的通用管理界面。Business Intelligence Development Studio使用了Visual Studio外壳来允许创建报表和报表模型。客户组件可以驻留在不同服务器上,而不需要在报表服务器上。2.13.3 获得联机图书的帮助报表服务的文档包括了SQL Server的联机图书。所有报表服务相关文档都只包含在一个源内。如果报表设计者计划在不同的计算机上安装服务器和客户端工具,应该考虑每次安装都包括联机文档。2.13.4 Adventure Works示例数据库使用SQL Server报表服务工作,报表设计者可以使用三种样例数据库。它们包括: AdventureWorks: 虚构的Adventure Works 公司的SQL Server OLTP数据库。 AdventureWorksDW(relational):基于AdventureWorks OLTP数据库的SQL Server数据仓库。 AdventureWorksDW(OLAP):基于AdventureWorks 数据仓库的分析服务OLAP数据库。设计者可以使用所有这三种数据库来创建样例报表。贯穿全书,我们将主要使用AdventureWorksDW数据库。从SQL Server安装盘上安装样例将会有助于学习。2.14 管理工具命令行的功能提供了脚本和对服务器管理、部署和配置功能的指令级别访问。这些功能将在第11章进行详细讨论。2.14.1 命令行和无人参与安装安装可以使用命令行开关来进行安装过程自动化。这个功能是由标准Windows Installer 2.0提供的。尽管没有命令行的界面,安装过程可以脚本化,也可以指定设置。2.14.2 日志文件报表服务在标准Windows应用程序日志中记录和指定的日志文件中记录事件信息。报表执行日志默认是允许的,可以在报表管理器中配置。报表服务器指定设置存储在RSReportServer.config文件中。更多的细小的跟踪信息可以在不同的应用程序和服务器事件以及系统错误的日志中捕获。这些日志也许有助于分析用法和调试特定问题。日志文件是使用时间戳名称自动产生的。进一步的配置和日志信息将在第11章中找到。2.15 设计报表从第4章开始,我们将会面对报表设计的实质工作,了解更多特定的设计元素。设计报表可以分为不同类别,下面将会提到。2.15.1 窗体报表一个报表可以在一页上显示单一记录,数据从一个表格、计算或者仅仅静态文本中获得。窗体报表可以用于打印或者显示一封信、发货单、合约或者信息表单。2.15.2 表格报表这是有重复行数据称为数据区域的报表的基础样式。表格数据是以自由形式的段或者带着行列的表格的行重复的。列表或者表格项可以用于产生不同布局的表格报表。可为一个表格中的每一列显示列标题,部分和和总数信息可以在表格或者组段的脚注中显示。2.15.3 分组和下钻一个报表中的记录可以分组和排序。每个组可以折叠或者展开,下钻出更多细节。这个功能给了用户浏览大数据集时不需要滚动分页就可以浏览很长报表的能力。这个报表也可以用扩展的方式打印。2.15.4 钻取报表一个钻取报表可以是任何标准窗体、表格或者数据透视表报表包含到另外一个分离的报表的链接。任何文本框项都可以用做一个链接来提供钻取的功能。关键字的值在链接中隐藏,作为传递给目标报表的参数用来筛选。2.15.5 多列报表一个报表可以包括多个列。列表或者表格行在一列中垂直重复,然后从一列蛇行转到另外一列,充满整页。这种格式类型对于优化标签和联系信息的页面空间是很理想的。2.15.6 矩阵一个矩阵类似一个交叉表或者一个数据透视表,行和列都计算总值,可以根据需要更多还是更少细节来折叠和展开。这是个非常简单易用的控件,非常类似ASP.NET中的数据网格控件。2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论