3.2 报表服务2005
本章包括了报表服务2005的核心组件。下面的讨论将会使读者更好地理解这些组件,必须把它们集中到一起才能创建一个完整的报表解决方案。
3.2.1 平台概览
正如在前一节所看到的一样,报表平台可以分为三个主要阶段:创作、管理和交付。现在专门看一下报表服务2005,看看这个平台是如何包含这三个阶段的。
首先,我们要确定的第一件事情是报表服务是一个真正意义的平台。Microsoft已创立了一个工具,为创建鲁棒的报表解决方案提供基础设施。这个平台包括了几个主要组件:报表服务XML Web服务、报表服务器和报表服务目录。在本节中,主要关注的是报表生命周期的管理和交付功能。在下一节中,讨论了支持创作的功能。
图3-2显示了一个报表服务平台的总览。图中解释了三个主要组件。理解这三个主要组件将更好地辅助设计和实现报表服务解决方案。
图 3-2
3.2.2 报表服务XML Web服务
Microsoft选择使用一个Web服务界面来展现报表服务的功能。这一点因为以下几个原因而变得重要。首先,它为其他编程语言开放了平台。因为Web服务构建在开放的标准之上,使用XML传输信息,报表服务可以在几乎任何支持超文本传输协议(HTTP)和XML的平台上实现。其次,Web服务允许跨网络通信。使用HTTP,消息可以穿透防火墙传送,使开发人员易于实现分布式系统。
那么,报表服务XML Web服务做什么?在通过报表管理器或者SQL Management Studio浏览的时候,可以执行大量的发布、显示和管理功能。所有这些功能都在报表服务Web服务下工作。Microsoft使用的任何API均对开发人员公开。所以,可以在报表管理器或者SQL Management Studio中使用代码做所有Microsoft可以做的事情。
下面是作者增强报表服务Web服务功能的一些要点的例子:
● 报表部署:我们使用了RSS脚本(将在第10章中讨论)来创建自动安装例程。这些例程使用了报表服务Web服务来生成一个文件夹,把包含的所有报表部署到这个文件夹中。
● 报表管理:我们也使用报表服务XML Web服务通过定制的界面来建立订阅。应用程序经常需要报表服务平台的补充功能,比如不通过报表管理器界面来订阅。通过Web服务,我们已经把订阅函数的一个子集嵌入到应用程序中。
● 报表显示:报表服务XML Web服务最常见的使用是在定制的应用程序中增加报表显示功能。大多数报表查看者需要三个主要报表项:报表列表、参数选择以及报表显示。所有这三项可以通过Web服务来进行,很容易围绕报表服务平台建立自己的界面和感觉。第12章将深入详细讨论在读者自己的应用程序中显示报表。
报表服务利用了标准Microsoft技术的优点来实现它的Web服务界面。Web服务的宿主是Internet信息服务(IIS),它使用了.NET Framework。这两个组件都提供了主体基础设施。IIS执行Web请求处理和路由,并有一些安全功能。.NET Framework为使用和部署Web服务界面提供了类。
报表服务XML Web服务的全部细目在附录B中列出。
3.2.3 报表服务器
报表服务器是报表服务后台的主要引擎。它的主要功能是处理和交付报表信息。可以把它想成报表服务的真正核心。这个核心由5个主要部分组成:报表处理器、数据源扩展、安全扩展、显示扩展和交付扩展。后面4个扩展实现了允许用户扩展引擎以适合自己的需要的接口。通过本节,会认识到每一个组件,并对它们的功能有一个基本的理解。
1.报表处理
报表处理是报表服务器中的主要驱动。这个过程负责处理用户对报表和报表模型的请求,返回合适的数据。在这个任务过程中它也进行报表缓存以提高性能。
报表处理器的主要任务是组合报表定义和报表数据,为用户返回一个格式化的输出。
图3-3解释了一个基本的报表请求和报表处理器处理它的过程。
图 3-3
报表请求处理
在收到一个报表请求时,报表处理器采取了下列步骤:
(1)它判断请求的是哪个报表,从报表服务器数据库中获得报表定义。
(2)验证用户对所请求报表的证书。
(3)报表处理器要求报表数据,将这个调用做成数据处理扩展。
(4)获取数据之后,报表处理器组合数据和定义,形成一个中间报表格式。这个中间报表与输出格式无关,因此可以使用任何可用的显示扩展来显示。
(5)创建中间报表之后进行缓存,以后根据特定报表的执行设置来使用。
(6)最后,中间报表送往显示扩展,返回输出格式。
下面会看到这个过程中涉及到的一些项。
报表定义
报表定义是报表与各种输出格式保持中立的一种表示。报表服务设计用于支持大量的 输出格式,所以报表定义并不关心报表最终显示为什么格式。报表定义定义了数据源和报表布局、参数以及默认设置。一些布局项目包括报表内包含的表、它们在报表中的位置和列数。数据源信息包括了数据库的连接字符串信息、对过程的查询以及任何超时和认证信息。
Microsoft已经将他们的报表定义作为报表定义语言(RDL)的一部分。RDL是一个公开规范,开发人员可以用它创建自己的报表认证工具、设计自己的输出格式(显示扩展)以及用程序来操作定义。一些公司已经利用了这个公开规范。Cizer公司,已经使用RDL来创建自己的基于Web的认证工具。Hitachi咨询已经使用RDL来将遗产报表自动转换为报表服务以及操作报表文本用于本地化。
要获得完全的RDL规范,请访问:
www.microsoft.com/sql/reporting/techinfo/rdlspec.mspx
报表定义和数据组合之后,形成了所谓的中间格式。
中间格式
中间格式(intermediate format)是报表服务使用的报表的内部格式。这个格式用于显示和缓存。这是数据和结构的组合,这就是说如果报表中定义了一个表格并且链接到一个数据集,中间格式中将会包括确定这个表格的所有行和列。但是,它不包括特定的显示信息,比如一个HTML文件中的<td>标记。中间格式的大小将依赖于返回多少数据。
缓存
报表处理器也处理报表的缓存。一个报表解决方案中的主要资源之一是报表数据源。为了减少数据源的负荷,实现缓存来存储查询结果用于将来使用。
缓存在大量场景中是有用的。在很多报表解决方案中,报表数据库在指定时间进行处理。在处理数据仓库时这尤其有用。比如说一个报表数据库每天只处理一次,这种情况下,在信息不会改变的时候不断查询数据库是一种资源的浪费。在上面这个场景中,缓存报表数据非常有用。
报表服务的缓存有三种主要类型:会话缓存、缓存实例和快照。下面三节分别介绍了不同的缓存选择。
会话缓存
因为报表服务是在HTTP上工作的,它必须对每个用户请求保留信息。这个信息称为“会话”(session)。如果在短时间内同一用户请求同一报表,重新进行查询就没什么道理了。所以,当一个用户做出了初始请求时,报表定义和数据就存储到会话缓存中。在这之后,会话缓存为每个用户保存在ReportServerTempDB中。会话信息的保存时间由报表服务器的设置决定。默认的长度是10分钟。任何没有指定选项集合是缓存实例还是快照的信息,都将利用会话缓存技术。
缓存实例
缓存实例也存储报表定义和数据,但是它们有一个指定的标识符。它们会在一个规定的时间过期。这个时间约束可以是几分钟、几小时或者几天。它也可以是一个指定的时间段,比如每天晚上12点。
在一个缓存实例中,没有定义指定的开始时间。有这个执行设置的报表在用户首次要求报表时进行缓存。在查询执行和中间格式生成时,用户必须等待。对这个报表的后续请求将利用已经缓存的中间格式。
在报表到达它的过期时间时,它会从缓存中删除。对这个报表中的下一次请求将会重新运行查询,重新建立中间格式,重新进入缓存。
如果较少改变数据或者频繁的数据改变对于做出商业决策并不重要时,这种缓存策略是完美的。
快照
最后一种缓存策略称为“快照”。正如其名字蕴含的意思,它是数据在一个时间点的备份。和缓存实例不同的是,快照有一个定义好的开始时间和未定义的结束时间。比如说有一组用户每周一早上7点需要一周的状态总结报表,用于每周的会议。在数据仓库组中,为了准备会议需要在周日晚上处理数据。数据处理之后就不再变化。这个数据非常大,查询需要大量时间。这种情况下,在信息可用后就存储报表是合理的。这种方式可以使用户在周一运行他们的报表并获得快速的响应时间。
还是上面的例子,一周过去之后准备运行报表。在这种情况下,可能不想删除上周的报表。反之,想将它们归档用于历史分析。有了快照缓存技术,就可以指定在访问历史中存储哪个报表、存储多少报表。在这个设置中,快照创建之后马上在访问历史中存储一个完全一样的备份存储。那么在数据更新,建立一个新的快照时,用户可以看到一个历史数据的视图。
现在认识了主要的报表处理引擎,下面将看到它提供的每个组件。
2.数据处理扩展
通过数据处理扩展,所有数据返回到报表处理器中。数据处理扩展可以为任何类型数据创建。报表服务支持大量的数据处理扩展。
数据处理扩展执行的一些常见任务包括:
● 连接到数据源
● 传递和获取参数采集
● 为数据源执行命令
● 从数据源中返回数据阅读器
● 提供从数据源中阅读数据的方法
● 在一个指定的数据源上实现事务
图3-4显示了一个数据处理扩展的基本分解。
图 3-4
下面我们看一下SQL Server 2005 报表服务支持的提供程序。
所支持的提供程序
报表服务支持.NET托管提供程序,也支持返回数据的定制扩展。.NET托管提供程序包括SQL Server、OLE DB和Oracle。托管提供程序完全利用了.NET Framework的优势。使用这些提供程序,用户应该可以连接到任何数据源。下面我们看一些常见的报表服务数据扩展。
SQL Server提供程序
使用SQL Server提供程序,用户可以从SQL Server的表、存储过程、视图和用户定义函数中获取数据。SQL Server托管提供程序验证对连接到SQL Server进行了优化。为了提高性能,已经移除额外的层如OLE DB和ODBC。
在使用SQL Server 提供程序的时候,用户也可以利用SQL查询设计器。这个设计器允许用户可视化地创建SQL查询,去除了一些语言的复杂性。SQL Server提供程序将可以和SQL Server 2000或2005一起工作。
Oracle提供程序
虽然报表服务使用SQL Server存储它的元数据,也可以使用Oracle作为报表的数据源。类似SQL Server托管提供程序验证,Oracle提供程序为Oracle进行优化,移除了额外的层如OLE DB和ODBC。
分析服务2005提供程序
一个报表服务2005增加的受欢迎的功能是分析服务2005提供程序。该提供程序允许用户连接到分析服务统一维度模型(UDM),获取维度数据。UDM给了用户一个可以理解数据关系和聚合的语义模型。对UDM的访问通过多维表达式(MDX)来实现。
从报表角度看,MDX是一种非常强大的查询语言。MDX可以理解数据关系并与其一起工作。它可以执行基于坐标的计算,来创建类似Excel的公式。
MDX具有很强的能力,也带来了一定的复杂性。很多人认为MDX是一种具有挑战性的语言。我的看法是MDX不比SQL难多少;它只是需要一些实践。一旦对这个语言有了一些基础的理解,常见的报表任务将变得微不足道。同时,可以使用分析服务数据扩展提供的MDX查询生成器。这个查询生成器允许用户拖曳尺度和维度来形成一个结果集。它也允许用户指定参数化的维度,随后在报表中显示。
OLE DB提供程序
OLE DB提供程序给了报表编写者很大的灵活性。应用这个提供程序,可以查询大量不同的数据源。下面只列出了其中的几个:
● Microsoft分析服务2000
● Microsoft Access
● Microsoft Excel
● Microsoft目录服务
● 用于ODBC的OLE DB
数据源扩展是报表服务平台的首个关键。它们允许编写报表来访问大量的数据源,如果没有数据提供程序,可以开发一种新的数据源扩展。在下一节中将看到显示扩展。
3.显示扩展
报表服务支持大量不同的显示扩展。在报表服务中创建一个报表时,使用一种与各种输出格式中立的输出格式。在报表中,要定义查询、字段以及它们在页面上的布局方式。显示扩展将应用这些信息,并将和报表数据组合到一起来创建一个格式化的输出。本节中,将看到其中一些输出扩展。
Excel
Excel显示扩展使用报表数据,将它输出到一个电子表格中。它对于很多用户来说是非常常见的格式。Excel对那些想对数据进行进一步分析的用户尤其有用。
在一些报表平台上的Excel显示可能因其他工具所使用的报表设计方法而易于引起某些格式问题。Microsoft Access是一个有带状的报表设计器的例子。在这种类型设计器中,用户有详细标题带和脚注带来处理数据集信息。这允许用户有很大的灵活性,但是不能很好地翻译成行和列。如果一个标题和相关数据项排列偏差了几个像素,对于显示扩展来说,判断这两项是否应该排成一列就成了很困难的问题。有些带信息带的工具将会把这些分离的项分成两个不同的列。这种类型的输出一般会产生一份电子表格,它需要大量人工操作才能正确显示格式。
报表服务不使用简单的有带报表设计。反之,它使用在一个页面内布局的对象。表和矩阵控件是用来显示重复数据的两个主要对象。两个控件都能顺利区分行和列。所以,在使用这种类型的显示项时,用Excel的输出会更接近原始报表。
Microsoft也提供了对PDF格式的显示扩展。此种格式属于用于共享文档最流行的格式之一。该格式清晰易读,还有打印功能。读者很可能为分布广泛、但最终用户不需要分析的报表选择这种格式。PDF格式的报表不能进行修改。PDF格式适用的例子是发货单、存货选择标签、每周销量统计以及公共财务文档。
PDF也支持文档映射。文档映射是报表服务的一项功能,允许在报表内定义书签。报表显示时,用户可以单击链接,很容易浏览到报表的不同部分。这个功能可以用于为更大的报表创建一个表格的内容。
最终用户可以下载免费的Adobe Acrobat Reader,分发报表服务产生的PDF文档并不需要使用许可。
HTML
报表服务中的最常用的报表输出格式是HTML。报表可以以HTML 4.0或者HTML 3.2的方式显示。.NET Framework确定了浏览器的支持格式,以恰当的格式显示报表。
HTML显示适用于交互式报表。通过浏览一个Web站点,用户可以轻松操作报表参数来找到特定的信息。HTML显示也支持动态可视化,允许用户下钻列表以显示更多细节。文档映射有助于浏览更大的报表。
HTML显示的缺点是缺少打印的功能。Web页不适合打印,不能随着报表服务一起改变。用户可以将报表导出为PDF或者TIFF来进行打印,但用户通常不乐意采取额外的导出步骤来得到一个可打印的报表。为了解决这个问题,报表服务现在支持客户端打印。客户端打印通过在用户的浏览器中运行创建适合打印格式的ActiveX控件来实现。这种Web打印的方式并非新的方法,水晶报表中已经采用了类似的过程。
Web包(MHTML)
Web包或者MHTML通常出现在电子邮件的消息中。MHTML代表聚合的HTML文档的MIME封装。这是一个非常长的文件名,一般意味着一个HTML文档中的图像、样式表和其他引用的类型信息被嵌入到MHTML文档中。它允许交付给用户一个单一的文档,不需要依赖外部资源。
MHTML文档在创建通过电子邮件交付的报表订阅时是有用的。MHTML允许直接交付一个格式化报表给报表用户,不需要相关附件。并非所有电子邮件产品都支持MHTML,所以选择这种输出格式前先检查一下该用户社区是否支持。
CSV
逗号分隔值(CSV)格式把报表定义、数据放到一起转化为一个无层次的文件。这个输出格式适用于交换数据。可能有遗产系统的客户非常擅于分析和使用无层次的文件。在这种情况下,可以给这些用户用CSV的格式发送电子报表。然而,报表服务不是要成为一个数据交换工具。对于实际系统集成,可以使用类似Microsoft BizTalk Server和Microsoft集成服务。
TIFF
标记图形文件格式(TIFF)是存储文档格式的一种广泛使用的格式。很多传真程序使用这个标准来传输数据。很多公司也用这种格式存储归档文件。以TIFF格式显示的报表对于文档管理系统比如Windows SharePoint服务是非常适合的。报表的历史快照将会传送到文档管理系统,然后从报表服务器中移除。它也允许用户利用常见的文档管理功能,比如索引和搜索。
XML
扩展标记语言(XML)是常用于把报表信息抽取为一种数据交换格式的另外一种格式,类似CSV。CSV和XML可以用于同样的目标;但是,XML功能更为强大。XML是一种结构化的标记语言,允许定义数据模式。报表服务在很多领域使用这种标记。在报表以XML格式显示时,它们既包含了报表定义,也包含了数据。XML文件对于交换信息是理想的方法。可以发送XML显示报表给用户或者其他应用程序,用于进一步处理。
4.交付扩展
交付扩展可以用于在指定时间和指定输出显示报表。交付扩展利用现有的显示和数据源扩展。报表服务支持将报表交付给电子邮件和文件共享。开发人员可以创建自己的交付扩展。
作者曾经处理的一些交付扩展例子有:
● 直接交付给打印机用于高容量票据报表
● 交付报表给SharePoint门户站点
交付扩展使用一系列类来处理通知和处理报表流输出。这些类从定时和交付处理器中调用。下一节介绍了定时和交付处理器。
5.定时和交付处理器
定时和交付处理器有两个主要功能:处理报表执行定时和通过交付扩展来交付报表。这些功能关键是Microsoft的SQL Server Agent和报表服务Windows服务。在设置报表定时时,创建了一项新的SQL Server Agent任务。这项任务包括了对报表服务器数据库上的一个单一的存储过程的调用。在代理运行定时的任务时,存储过程在报表服务数据库的事件表中放置了一个记录。报表服务Windows服务按照常规查询这个表。记录一旦出现,报表服务Windows服务启动定时和交付处理器。图3-5和图3-6演示了用定时和交付处理器创建一个订阅和处理订阅事件。
图 3-5
图 3-6
看过了定时和交付处理器后,下面将浏览一些使它正常工作的功能。
定时
报表服务2005有为报表创建复杂执行时间的能力。在创建一个交付的时间时,报表服务在报表服务器数据库存储了定时信息。它也创建了和这个时间相关的SQL Server Agent任务。用户和管理员都可以为报表执行和交付定义时间。
订阅
订阅以在指定时间交付报表给最终用户的方式进行。用户可以通过电子邮件、文件共享或者定制的交付扩展来交付报表。报表服务中有三种不同类型的订阅:标准订阅、数据驱动的订阅和基于事件的订阅。本节中,可以看到三种不同类型的订阅。
标准订阅
个人用户订阅可以通过SQL Management Studio、报表管理器或者通过报表服务Web服务的定制的应用程序来创建。建立了一个标准订阅后,参数值和显示格式这些信息可以和报表交付一起定时发送。
使用标准订阅,用户可以定义自己接受报表的时间。对于小规模报表来讲,这是重要的一点,可以给用户接受特定信息方式上提供很大自由。
数据驱动的订阅
数据驱动的订阅为扩大报表订阅规模所用。订阅可以为大量用户创建,为每个人包括不同的显示参数、报表参数和交付选项。这允许用最少的工作量为用户创建一个定制化的报表体验。
考虑一家大型零售公司,公司的每个店铺有一个店铺经理。每周店铺经理收到前一周的销售数字。发给每个经理的报表都是相同的,只有实际店铺不同。那么,使用数据驱动的订阅,可以动态地为每个报表设置店铺报表参数,为每个经理发送个人电子邮件报表。最后,只创建了一份报表,但通过快速剪裁报表,可发给大量不同的用户使用。
建立数据驱动的订阅非常直接。类似于标准订阅,可以有两种主要数据集合,为订阅进行配置:报表信息包括参数和交付信息,例如一个电子邮件地址。数据驱动的订阅使用一张关系表来存储报表和交付信息。因为存储在关系表中,所以可以为创建的每一条记录进行定制。
标准和数据驱动的订阅中,这些报表的交付是时间驱动的。下一节中,可以看到两种类型的交付事件。
基于定时的事件
判断报表什么时候交付的常用方法之一是通过某种类型的定时。报表可以在每月、每周、每天或者在任何预定义的时间间隔进行交付。设置时间时报表服务给了用户大量不同的选项。这些时间既可以指定给一个给定的订阅,也可以通过报表服务共享。
想象一下用户的公司有一个报表集合,在每周日晚上暗地里进行更新。执行官可以在周一早晨的会议上使用这些信息。可以定义一个共享的时间,包括例如“每周一次,周一,早上6点”的信息。这个共享的时间表可以用于任何数量的报表。如果日后用户认为早晨6点发送报表不能满足新的需要,可以简单地编辑共享的时间表,从而为每个使用报表的人更改时间。
快照更新事件
报表交付也可以通过快照报表的更新来触发。公司中的很多报表设置了更新的时间间隔。例如,每月销售的报表数据总是在每个月的最后一天更新。一旦更新,数据便被冻结,整个月都不能再更新。假如要为这个信息创建报表,需要在每次报表运行时去查询数据库吗?不,这里的信息是静态的。所以,在每个月结束时创建一份数据的快照,并存储整个报表。这样,在用户重新显示报表时,就不需要再承担数据库调用的开销。
所支持的交付扩展
交付扩展同定时和交付处理器紧密绑定在一起。在为用户交付订阅时使用它们。Microsoft提供了两种交付扩展,并且赋予用户开发他们自己的交付扩展的能力。报表服务支持两种交付扩展:电子邮件和文件共享。本节中可以看到这两种基本扩展。
电子邮件
电子邮件支付扩展允许用户直接在邮箱中接收报表。可以指定准备发送报表的显示格式以及是否在报表中包括Web链接。根据报表中使用的显示格式,用户或者直接在邮箱中查看报表或者以附件的形式接收它。正如前面所提到的,可以使用Web包(MHTML格式)来将报表和它们的图像嵌入到一个电子邮件的消息中。
要发送电子邮件交付,报表服务必须可以和一个有效的电子邮件传输协议(SMTP)服务器进行通信。在安装和配置报表服务时要初始化这个设置。
文件共享
报表也可以直接交付给文件共享。为了做到这点,报表服务必须有对共享的写权限。可以指定发送报表到文件共享时所使用的证书。
定制交付扩展
除了这些支持的扩展,报表服务还可以创建定制的交付扩展。我们遇见的一些常见扩展包括打印机交付扩展。一个客户每个月必须打印大量的报表,大约200 000份。我们创建了直接和打印机交付接口的扩展,能够有效地处理每个月的所有报表。
6.安全
最后看到的一个组件是报表服务安全扩展。报表服务依靠安全扩展来处理认证和授权。报表服务中默认的安全扩展支持Windows认证。在大量场景中,这是一种可以接受的方法。然而,也存在一些解决方案,不能指望用户有可以信任的Windows账户。
在一个客户场景中,我们使用了一个销售宿主端Web应用程序的解决方案提供程序。客户对通过Internet的报表服务来提供报表很感兴趣。客户的解决方案实现了自己的认证和授权逻辑。要实现报表服务,我们必须紧密围绕这个认证和授权逻辑。我们的最后解决方案包括了一个定制的安全扩展,调用客户的应用程序逻辑来认证一个用户。我们有了用户的认证信息后,可以在解决方案中很容易地实现不同类型的安全。
开发人员常常对创建自己的安全扩展很犹豫。我们已经看到很多人尝试在报表服务之上实现他们自己的安全逻辑而不是使用安全扩展。我们的经验表明,在安全模型之上 而不是在安全模型之内进行工作,通常会需要更多的工作,来实现更少的功能。通过实现一个报表服务安全扩展,可以利用平台的体系结构,实现和平台紧密结合的所有报表服务功能。
7.报表服务Windows服务
报表服务的另外一个主要组件是报表服务Windows服务。这个服务的其中一个主要功能是定时任务的执行。入口使用SQL Server Agent写入到报表服务器数据库的事件表中。报表服务Windows服务默认每10秒钟查询一次这个表。一旦找到一个入口,它就执行事件所需的任何处理。
3.2.4 报表服务目录
报表服务依靠SQL Server来存储元数据。这是考虑到大的报表应用程序能有更大的可伸缩性。它同样允许用户使用SQL Server的内在功能,比如备份和事务记录。
报表服务使用两个SQL Server数据库存储数据:ReportServer和ReportServerTempDB。在下一节中,可以看到这两个数据库,并了解如何使用它们。
1.报表服务器数据库
在报表服务中,ReportServer数据库是主要的数据存储。它包括了所有报表定义、报表模型、数据源、时间表、安全信息和快照。每个功能区有一系列表。数据库模式是开放的,易于追随。
并不推荐对这些数据库的表进行更新和查询,但理解它们是如何安排的就能更好地理解报表服务是如何工作的。
表3-1列出了ReportServer数据库的一些表和它们相关的功能。
表3-1
表名 | 功能 |
资源 | |
Catalog | 包含报表定义、文件夹位置和数据源信息 |
DataSource | 包含个人数据源信息。数据源信息的维护独立于报表定义,确保在报表重新发布时不会被覆盖 |
安全 | |
Users | 用户名和安全ID(SID)信息,用于认证用户 |
Policies | 不同安全策略的参考列表 |
PolicyUserRole | 用户、组、角色和策略的关联 |
Roles | 定义的角色以及角色可以执行的任务列表 |
快照和快照历史 | |
SnapshotData | 用于运行个人快照的信息,包括查询参数和快照描述 |
ChunkData | 存储报表快照。快照包含报表定义和数据。也包括含有显示快照输出的记录,用于快速显示 |
History | 在存储的快照和它们的保存日期之间的引用 |
定时和报表历史 | |
Schedule | 包含不同报表执行和订阅交付时间的信息 |
ReportSchedule | 给定报表、它的执行时间以及要采取的动作之间的关联 |
Subscriptions | 个人订阅列表,包括拥有人、参数和交付扩展 |
Notification | 订阅提醒信息,如处理日期、上次运行时间和交付扩展 |
Event | 用于时间提醒的临时存储。通过SQL Server Agent注入,由报表服务Windows服务执行 |
ActiveSubscriptions | 订阅成功和失败的信息 |
RunningJobs | 当前执行的规划好的处理 |
管理 | |
Configuration | 报表服务配置设置。它只能通过报表服务配置工具来管理 |
Keys | 用于数据加密的公钥和密钥列 |
ExecutionLog | 执行的报表列表,在开始执行、结束执行、用户请求和使用的参数的记录 |
报表模型 | |
ModelDrill | 包含在实现报表生成器无限下钻功能时使用的信息。列出报表和它们相关的报表模型 |
ModelItemPolicy | 在给定报表项、模型和策略之间的关联 |
ModelPerspective | 在给定报表模型和它的视图之间的关联 |
在使用报表服务时,很重要的是要密切注意ReportServer数据库。它包含了关于报表服务的所有关键信息,应该定时备份。
2.报表服务器临时数据库
顾名思义,ReportServerTempDB数据库存储了临时的报表服务信息。用户会话信息存储在ReportServerTempDB中。因为报表服务使用HTTP进行通信,在客户端应用程序和服务器之间不维护状态。用户运行的所有关于报表的会话状态必须在每次服务器调用之间进行存储。ReportServerTempDB把这些信息存储到SessionData表中。
ReportServerTempDB也存储了报表缓存信息。在报表设置为缓存实例时,报表执行没有确定的时间。它依赖于哪个过程先请求报表。报表执行之后,中间格式和数据存储在ReportServerTempDB数据库之中。如果这个数据库发生故障,缓存信息将会丢失。但是,因为它是在用户查看报表时运行,实际上没有损失信息。另一方面,快照不在这里存储。它们的执行通常在一个设置好的时间,确保报表数据是正确的。所以,这些信息存储在更永久的ReportServer数据库中。
如果没有ReportServerTempDB数据库,报表服务将不能工作。
表3-2中列出了ReportServerTempDB数据库中的一些表和相关功能。
表3-2
表名 | 功能 |
ChunkData | 为会话缓存的报表和实例存储报表定义和数据 |
ExecutionCache | 存储执行时间包括缓存实例的超时信息 |
PersistedStream | 为单个用户存储会话级的显示输出 |
SessionData | 保存个人用户会话级别信息,包括报表路径和给定会话的超时信息 |
SessionLock | 临时存储,处理加锁的会话数据 |
SnapshotData | 存储临时快照 |
不需要备份ReportServerTempDB数据库中的数据。
3.执行信息
正如前面提到的那样,不推荐查看或者修改基本的SQL Server表。在ReportServer数据库中分析执行信息也非常困难。
然而,有大量的关于报表执行的信息存储在ReportServer数据库中。为了更容易地访问这个信息,有一个示例集成服务包,将会解析出报表执行数据用于报表。
使用集成服务包,有示例报表演示了如何展示执行信息。为了访问这些示例,必须安装CD中包括的服务器管理示例。
3.2.5 报表设计
好的报表设计对于任何报表平台都是核心的。如果报表很难创建和编辑,产品将很难使用。在报表服务2005发布时,Microsoft使用了一个有趣的方法来设计报表。实质上,它决定创建一个标准,可以为Microsoft和第三方扩展。这个标准称为报表定义语言(RDL),已经开放给外界的工具制造商,允许他们创建自己的报表设计工具。本节将会看到不同的设计选择和如何支持它们。
1.Visual Studio 2005报表设计器
Visual Studio 2005已经成为大量Microsoft产品的标准开发环境,这些产品包括Office、集成服务和分析服务。报表服务2000支持Visual Studio作为它的开发界面。在SQL Server 2005中,Microsoft创建了一个新的工具,称为Business Intelligence Development Studio。
Business Intelligence Development Studio基于Visual Studio 2005环境。在安装任何Business Intelligence产品(分析服务、集成服务和报表服务)时,Visual Studio 2005环境也将被安装。报表服务包括了创建报表项目和个人报表的向导。它也包括了创建新的共享数据源和空白报表的模板。第4章中更详细地讨论了报表设计。
安装了Visual Studio 2005之后,用户可以创建一个新的报表项目。在报表项目中,用户可以定义数据源和查询,用于驱动报表、布局和参数输入。Visual Studio是一个健壮的开发工具,主要面向想要在一个更强大的环境下工作的开发人员和分析人员。但是,用户创建自己的基本报表的需求仍然很大。下一节包括了报表生成器对于更大群体开放了报表创建。
2.报表生成器和报表模型
有争议说报表生成器是报表服务2005中最大的功能增强。它是创建一个真正的报表解决方案时的主要组件。报表生成器想要给最终用户创建自己的报表的能力。这个功能的其中一个关键是让用户理解更易于他们使用的数据模型。
2004年,Microsoft并购了ActiveViews公司。ActiveViews拥有允许开发人员在现有数据库之上创建一个用户界面友好的数据模型。这个模型使最终用户不需要了解根本的数据库查询语法或者模式就可以创建报表。报表服务团队使用了这项技术并把它集成到报表服务2005中。现在,开发人员可以创建新的报表模型项目,最终用户可以在报表管理器中使用它们。第8章和第9章将会详细介绍报表模型和报表生成器。
3.第三方设计器
因为RDL是一个开放标准,有大量的第三方厂商也可以为开发报表创建工具。三个最著名的厂商是Proclarity、Panorama和Cizer。Proclarity和Panorama都是OLAP前端工具的开发者。他们引入了报表服务,使用自己的引擎来帮助开发人员查询多维数据和在其之上创建报表服务。Cizer利用RDL创建了围绕报表服务的一系列软件。Cizer的产品包括了基于浏览器的报表设计界面和一个Microsoft MapPoint集成组件,允许用户在他们的视图中包含图元素。
看过了不同的引擎组件和报表设计工具之后,下面看看报表如何呈现给最终用户。
3.2.6 报表用户界面
前面讲过,报表服务是创建报表解决方案的平台。在灵活的报表处理引擎和不同的开发工具之外,平台必须提供一个机制为最终用户显示报表。在报表服务2005中,有很多方式来将报表显示给他人。本节中将看到如何通过报表管理器、SharePoint Web组件、Visual Studio控件和定制的用户界面显示报表。
1.报表管理器
报表管理器是为最终用户显示报表的默认机制。在安装报表服务2005时创建了两个虚拟目录。其中一个是报表管理器目录。报表管理器是一个基于Web的应用程序,和报表服务Web服务进行通信。它可以显示一个文件夹列表和报表,用于最终用户浏览。它还提供了用户创建和修改自己的订阅的机制。
这个界面易于部署,因为它包括在产品中。但是,它不提供用户界面的大量灵活性。可以通过技术定制使用的样式,但不能重新安排或者修改应用程序的不同部分组织和显示的方式。下面几节会谈到显示报表的其他方法。每一个都需要提高从开发到实现的定制级别。
2.SharePoint Web组件
将报表服务集成到其他应用程序中最容易的方法之一通过使用SharePoint Web组件。SharePoint Web组件包括了了一个报表浏览器和报表查看器。这些控件可以用于将报表服务嵌入到现有站点中。实现这些Web组件需要对报表服务和SharePoint的总体理解。
如果不使用SharePoint作为用户界面部分,可以考虑一些Visual Studio控件来完成 集成。
3.Visual Studio控件
报表服务2005包括两个报表查看器控件,用于将报表嵌入到定制的应用程序中。这些控件包括ASP.NET控件和Windows控件。这两个控件都可以和报表服务XML Web服务通信来显示报表。Windows控件是报表服务2005的一个主要改善。它包括了一个本地处理模式,允许开发人员在自己的应用程序中提供报表定义和数据集。这个功能使脱机应用程序的创建仍然使用报表服务报表处理。
为了获得最大的灵活性,用户可以通过报表服务XML Web服务创建自己的界面。
4.定制用户界面
报表服务XML Web服务包括了一个新的执行端点,允许开发人员更容易地创建他们自己的用户界面。这个端点提供了把报表显示为不同格式的方法。报表显示之后,用户可以将这个输出发送给Web处理代码或者其他一些定制界面。
这个方法在创建用户界面时提供了最大的灵活性,但也需要最大程度的技巧。报表服务的很多实现需要前面的用户界面选择的一些组合使用。在第12章中,将看到实现每个用户界面选项,讨论设计解决方案时需要考虑的地方。