SQL Server 2005报表服务高级编程

发表于:2008-05-05来源:作者:点击数: 标签:SqlsqlSQLSERVERServer
很多人问过我,“为什么报表如此平凡,你还这么热衷于它?”对于我来说,有关报表的最激动人心之处就在于它是如此普遍。像基本的交通运输一样,每个人都在以这样或那样的方式使用它。报表是一件用来传达信息的艺术品,但不同于常规的艺术品,消息可以随着驱

 很多人问过我,“为什么报表如此平凡,你还这么热衷于它?”对于我来说,有关报表的最激动人心之处就在于它是如此普遍。像基本的交通运输一样,每个人都在以这样或那样的方式使用它。报表是一件用来传达信息的艺术品,但不同于常规的艺术品,消息可以随着驱动它的数据而改变。可以帮助数百万人和公司并为他们所用,这就是我着手编写程序并最终加入Microsoft的原因之一。没有其他公司可以像Microsoft一样通过发布伟大的产品来影响如此多的人。

  报表是一个非常广泛的主题,范围包括从装箱单、电话费账单到即席分析和Excel电子表格。在设计Microsoft SQL Server报表服务时,我首先对报表下一个简单的定义:报表是一个信息交付平台。当然,这个定义也非常广泛,它确实允许我们将精力集中在设计上,同时留给我们很大的空间在后续版本中进行扩展。这本书将帮助读者了解报表服务的强大能力,并充分地利用其功能。

  信息不仅仅是数据;它是转换成有用信息的数据。转换过程非常重要。任何工具都 可以阅读并显示该数据;人们为完成工作而真正需要的数据是经过慎重选择的、正确的 和密切相关的信息。有许多工具可以让用户访问数据,建立“视图”和“报表”。但是,这些用户常常不了解数据存储的所有细微差别,从而会产生不准确的结果,或者一不小心就会影响数据引擎的性能。报表服务以官方源的方式运行,从而使每个人都使用正确的同一版本。

  将来,Microsoft计划通过集成信息权限管理(Information Rights Management)推动其更进一步发展,从而使得信息不仅来自单一源,而且可以对其进行认证,它还会过期,甚至在数据交付给最终用户后仍可进行访问控制。数据常常不是存在一个数据库中甚至来自于一个数据库,这对于我们这些处理公司数据的工作人员来说是个令人痛苦的事实。只有极少数的报表(或者能提供充分见解的报表集)是来自单一数据源的。建立多种类型的数据集市(data mart)或数据仓库是最佳的解决方案,但常常因时间、政策或预算的限制而不可能实现。报表必须能够从任何一个数据源获取数据,并将所有数据结合在一份报表内。

  在需要信息而得不到它的时候,这些信息就会显得弥足珍贵。交付信息比只处理信息和加工信息更重要;在用户需要时,它能在用户拥有的设备上提供任何格式的信息。今天最常见的案例是普遍存在的用户利用某个浏览器通过HTML进行在线访问。如果计算机连接到了服务器上,这会是完美的。但是众所周知,没有什么事情是完美的。当我们在飞机上、在汽车里、陪同客户、在游戏中、在生产基地等类似的场合时,我们需要报表。我们同样需要报表的多种功能:交互性、点对点打印、应用程序集成——类似MS Excel的“如果怎么样,那么会怎样”的场景和附加分析、经由PDF的通用访问等。单一的格式和单一的交付渠道是不够的,但是如何知道自己需要哪一种选择呢?报表服务可令人远离这些选择。所有的报表可以以任何渠道分发或者以任何格式呈现。报表设计独立于报表的使用方式。在给定了指定格式或者所需渠道的约束后,系统的责任是提供尽可能准确的报表。

  建立一个平台与建立一个解决方案是不同的。实际上,在很多情况下,二者的目标是完全相反的。如果开发人员和管理员已经访问了产品的所有方面,那么这个平台是成功的。他们要能够优化、扩展、限制、嵌入和替代产品的某些部分来满足需求。这意味着所有API都是可用的并且编制了文档,所有格式都是开放的和描述清楚的,而且每个组件都是可配置的或可替代的。当然,软件设计往往因多种权衡而存在很多限制,在建立报表服务时,这是努力的目标。与Windows、SQL Server或Visual Studio非常类似,报表服务是为了使开发人员能够基于一个坚实的基础创建报表,在相当短的时间内以更多的功能来满足商业需要,而且无损其灵活性和自创报表的能力。

  展望未来,Microsoft将增加数不清的功能和方案,使平台的功能更加强大,同时只需要很少的或者甚至不需要进行内部开发。我在本书中提到了其中一些功能,但还有很多没有考虑到的地方。

  我们期待收到所有用户的来信,告诉我们对他们来说什么是重要的,我们怎么做能够使设计、创建和操作他们的信息交付系统变得更加容易、快速并且(我希望)具有趣味性。 

  敏捷性。在今天的商业中,必须每天或每周(而不是每月或每季度)就做出关键决策。业界领先的公司意识到若要提高企业的竞争响应速度--他们公司的敏捷性-- 需要将尽可能多的决策权下放到第一线员工手中。在如今要求更快地做出更好决策的商业气候下,实时竞价系统、反向拍卖、现货精确成本计算、按照订单生产、全球劳动力市场和全球化只是其中的一些发展趋势。

  为了在这个新模式中获得成功,员工们要尽可能地获取最优信息。信息要准确、及时和可靠,必须能够满足他们的需要。无论员工们通过聪明地开辟新市场来最大化收益,还是通过精明地采购来最小化支出,他们都必须掌握正确的信息。

  Microsoft 的SQL Server报表服务的发布在商业智能界树立了一个重要的里程碑:信息真正可供大众访问。通过将报表功能直接创建在Microsoft企业数据平台SQL Server上,软件开发人员和信息架构师现在可以依靠这个高质量、可伸缩和健壮的体系结构来创建他们的报表。

  在过去的20年,商业智能(BI)在企业中的使用越来越深入。以前,一些非常熟练的分析师集中在公司象牙塔的高层,现在BI已经为处于现今公司第一线的生产线经理、部门主管和知识工人所掌握。
  在2003 年和2004年,本书的第一版问世。从那时起,我了解到报表服务将会成为一个很重要的部分,要将关于它的一本书写得像产品本身一样内容丰富,这并不像在公园里散步那样容易。于是我要组建一支有能力、成熟的团队。幸运的是,我很高兴能和一些头脑聪明、工作努力并且热爱钻研技术和解决问题的人一起工作。报表服务是两年前的一个新产品,我们做了大量研究,也经历了不少教训。这之后,我们通过将报表解决方案摆在很多商业用户和咨询客户面前,了解到更多的信息。
1.1 我们所了解的

  并不是说我们已经知道了关于这个产品的所有知识,通过每个项目我们都会了解更多的知识。但我们尽可能地使任务结构清晰。请允许我先介绍一下那些和我一起快乐工作的人。在编写本书第一版时,我们主要使用产品的Beta版。我们和Microsoft的报表服务产品团队的成员进行了很多次谈话,逐渐适应了产品的开发速度,了解到这个产品可以做什么、不能做什么。我们都记录下来,然后把产品令人惊奇的功能写入书中。然而正如大多数Microsoft产品一样,我们发现执行每项任务至少有18种不同的方法。从那时起,我们就开始在不同的环境下使用报表服务。我们和商业用户交谈来理解他们的报表需求,并为不同类型的公司设计各种报表解决方案。我们把报表集成到Web网站、门户网站、局域网站点和桌面应用程序中去。我们培训了上百名用户、开发人员和管理人员,也在会议上做过报告。我们为储蓄和投资银行、产品支持中心、软件公司、销售和客户管理系统制造商、体育用品公司、主题公园以及娱乐公司设计过报表。我们知道了很多关于怎样设计报表以及怎样更高效地建立报表解决方案的知识。本书就是基于以上这些经验编写而成的。
谁要使用报表服务

  过去两年,在讲授报表服务培训课程的过程中最重要的教训之一也许就是怎样区分不同的听众。这里并非指年龄和性别的不同,而是在设计和实现报表解决方案的人中存在角色和背景的差异。作为一名应用程序开发人员,我已经习惯于指导程序员或者其他专业技术人员,他们的使命就是通过编写软件来使世界变得更加美好。但是我很快发现不存在同样类型的报表设计人员。他们其中一些侧重商务而不热衷于技术和程序代码。很多人只是简单地为了管理或者更方便地处理生意。他们需要快速得到信息,并不想了解事情的来龙去脉或者使用笨重的工具工作。表1-1中的数字并非来源于任何一项调查和研究,仅仅是我从客观角度观察参加报表服务培训班的学员所得到的数据。

表1-1

  过去,可靠的报表系统非常昂贵,只有在可以实现最大收益的地方,公司才被迫实施健壮的报表系统。Microsoft的长期目标是通过激励使用来降低信息技术的成本,这在SQL Server报表服务的授权模型中再次显现出来。这个技术授权给目前已经拥有SQL Server授权的任何人,所以不需要任何额外的费用。它对于软件开发人员和类似用户是一种非常大的发展;它会极大地提高详细、准确、及时的报表的使用和分发,从而推动高质量的BI在企业中的发展。

  在这本优秀的书籍中,作者带领我们全面学习SQL Server报表服务,涵盖了从实际的报表基础知识到为BI解决方案架构师、设计人员和开发人员编写的报表解决方案的发布和管理;它必然是一种极有价值的资源。

 且慢!这是一本关于创建报表以有意义和有趣的方式显示信息的书籍。我并不想以枯燥的列表方式来表示上面这些信息,所以我创建了一个简单的报表并把它制成图(确切地讲,它是一个分裂式、半透明的饼状图),如图1-1所示。

在和报表服务打过交道、参加过相关课程或者从事咨询服务的人中,大约有1/6是从事非技术类工作的商业经理。这类角色主要对更大的一些场景感兴趣:报表如何满足他们的分析需求并帮助他们做出判断。这类人对实现细节或者技术原理毫无兴趣。他们指导别人从事具体的工作。

  系统管理员包括服务器系统创建人员、硬件专家和数据库管理员。在一些规模较小的公司里,这类角色经常和软件开发人员互换。管理员们通常关心服务器和基础设施的建立和维护,以保证报表解决方案可用和正常工作。他们一般把时间和精力花费在安全管理以及如何优化系统以获得更高效率上。

  软件开发人员代表了略少于1/3的听众。为了实现高级的报表功能,软件开发人员需要编写复杂的查询和定制的程序代码,用来处理商务规则和赋予报表在不同条件下的不同格式和行为。开发人员一般对报表设计环境像对家一样熟悉,因为它和他们熟悉的编程工具非常相似。

  最大的一组报表从业人员并不是软件开发人员或者其他技术专家。他们需要强大的计算机使用技能,但他们并不花费时间来编写代码,或者使用像Visual Studio、Enterprise Manager或者SQL Server Management Studio之类的工具。他们是需要设计报表来进行商业应用的普通商业用户。对于一个软件开发人员来说,熟悉环境只是小菜一碟。在我为Microsoft 教授报表服务2000课程的时候,我经常使用一大部分课堂时间来教学生使用Visual Studio用户界面。它对于这组人员是新的工具,并不像他们熟悉的其他应用程序一样。比如,以前使用过其他工具(如Crystal Reports)的报表设计人员通常对报表服务设计工具有一些恐惧,因为他们不熟悉这些看起来比他们过去习惯使用的工具更为原始、更需要以开发人员为中心的工具。为了获得高级报表功能的优点,这些人必须获得一些编程技巧,或者和软件工程师一起工作,以在他们的报表中添加定制的代码和表达式。

原文转自:http://www.ltesting.net