剖析SQL Server 2005中的报告服务架构
开发人员可以创建其它定制提交扩展。
九、 生成扩展Report Server生成扩展负责把一个报告的设计和数据转换成一种设备特定的格式。RS中包括的扩展包括HTML(3.2和4.0),Microsoft Excel,Text/CSV,XML,图像(BMP,EMF,GIF,JPEG,PNG,TIFF,WMF),以及PDF生成。注意 不象 SSRS 2000,它把Excel文件生成为一个含有特定Excel元标记的MHTML文件,SSRS 2005把报告生成为Excel的本机二进制格式。因为最后的生成阶段仅是与数据处理松耦合的,它能够使用户为同一个报告选择不同的生成选项而不需要重新查询数据源。另外,开发人员还能够创建其它定制生成扩展。十、 安全扩展 本文经常使用术语'安全扩展',好象它是一个概念。事实上,存在两种相互联系的扩展:· 认证扩展,负责建立用户标识· 授权扩展,负责检查是否一个标识能够存取一个特定SSRS资源SSRS包括一个基于Windows认证的安全扩展。在建立一个用户标识后,一个授权过程决定是否配置一个Windows用户(或包含一个用户的一个Windows组)以存取一个报告服务器上的一个特别资源。开发人员能够创建其它定制安全扩展。一个SSRS实例仅能使用一个安全扩展。也就是说,或者使用Windows或者使用一个定制扩展,同一时刻只能使用一个。十一、 Report Server数据库SSRS目录下包括两个数据库:Report Server数据库(默认名是ReportServer)和ReportServer临时数据库(默认名是ReportServerTempDB)。Report Server数据库是一个SQL Server数据库,它能够存储SSRS配置部分,报告定义,报告元数据,报告历史,缓存政策,快照,资源,安全设置,加密的数据,调度和提交数据,以及扩展信息。注意 尽管用户能够直接存取在SSRS目录下的数据库并且能够直接修改SSRS使用的对象;但在实践中,不推荐(或不支持)这样做,因为在SSRS目录下的内在数据和结构不能被保证与不同版本的SSRS、服务包或补丁相兼容。请把Report Server数据库当作产品数据库之一来对待。尽管许多开发人员都习惯把RDL存储在一个单独的仓库中,并因此导致经常恢复RDL;但是,损失快照数据能够带来消极的业务影响。例如,用户可能使用快照的报告'相对静止'数据的能力来作一些业务决定。SSRS使用的另一个数据库是Report Server临时数据库。这个数据库负责存储中间处理产品,例如缓冲的报告、会话和执行数据等。注意 为了把临时快照存储在文件系统而不是数据库中,管理员应该完成下列步骤。首先,修改RSReportServer.config,并把WebServiceUseFileShareStorage和WindowsServiceUseFileShareStorage设置为True。然后,把FileShareStorageLocation设置为一个全称路径;默认路径是'C:Program FilesMicrosoft SQL ServerMSSQL.3Reporting ServicesRSTempFiles'。不同于SQL Server的tempdb,当在ReportServerTempDB中的数据存储时限超过SQL Server时,Report Server将会重启。而且,Report Server能够周期性地清除ReportServerTempDB中的到期的和孤立的数据。在任何时间,所有的ReportServerTempDB中的数据都能够被以最小(或毫无)影响删除掉。例如,这种用户可能体验到的最小的影响是带来一种暂时的性能减弱(由于损失了缓存数据,而且失去了一个执行状态)。执行状态被存储在表SessionData中。执行状态结果的损失可能导致一个错误:'Execution 'j4j3vfblcanzv3qzcqhvml55' cannot be found (rsExecutionNotFound)'。为了解决执行状态损失问题,用户需要重新打开一个报告。提示 SSRS不能恢复数据库中删除的ReportServerTempDB或表。为了快速地从数据库中对象的错误删除中进行恢复,应该保留一个脚本或一个空ReportServerTempDB的备份。在一个向外扩展的发布中,SSRS目录是被跨该发布中所有的报告服务器共享的。十二、 调度和提交处理器调度和提交处理器宿主在SSRS Windows服务中,负责进行事件监视。当该调度和提交处理器收到一个事件时,它与报告处理器协作共同生成一个报告。在生成一个报告后,调度和提交处理器使用提交扩展来提交该报告。调度和提交处理器利用SQL Server Agent作为一个调度引擎。这个调度是基于拥有该调度的Report Server的本地时间。当一个管理员创建一个新的调度时,SSRS创建一个SQL Server Agent作业以运行于请求的调度。然后,SSRS在ReportServer数据库的Schedule表中增加一个新行。该行的ScheduleId字段是该作业的标识符。主管能够调度订阅、报告历史和快照执行。当调度时间已到,SQL Server Agent通过执行该调度作业生成一个事件。然后,这个作业在ReportServer数据库的事件表格中插入一个行。这个行担当一个调度和提交处理器的事件。调度和提交处理器每隔PollingInterval秒检查事件表并初始化适当的动作以响应一个事件。注意 这个PollingInterval是在rsreportserver.config配置文件中指定的,默认情况下,被设置为10秒。当SSRS Windows服务没有运行(调度和提交处理器没有处理事件)或SQL Server Agent没有运行(这个代理没有生成事件)时,调度和提交处理将会'中断'。注意 当SSRS Windows服务并没有运行而SQL Server Agent已运行时,SQL Server Agent的作业历史将显示:该被调度的请求('插入事件')成功运行。该作业仍然会成功,尽管被调度的操作能完成,因为调度和提交处理器并没有运行来处理该事件。
十三、 Report Builder(SQL Server 2005中新增)在以前的SSRS版本中最常用的一个特征是开发终端报告的能力。微软在SSRS 2005中实现了这一功能。Report Builder是一个ClickOnce,特定的终端用户报告创作和出版工具,它提供拖放且容易使用的报告设计功能。注意 你可以通过搜索http://www.microsoft.com和阅读http://msdn.microsoft.com/msdnmag/issues/04/05/clickonce/default.aspx查找更多的有关ClickOnce应用程序的信息。作为一个典型的ClickOnce应用程序,Report Builder是从一个浏览器中发布的,并在一个客户端计算机上执行。在安装期间,Report Builder不要求管理员权限,它运行于一个.NET代码存取安全的封装中。为了发布Report Builder,点击报告管理器的工具栏上的'Report Builder'按钮。作为选择,你可以使用'http://<server>/ReportServer/ReportBuilder/ReportBuilder.application'URL来启动Report Builder。Report Builder被发布 到'C:Documents and Settings<UserName>Local settingsApps2.0<obfuscated directory>'路径下。在你可以使用Report Builder之前:· 你必须拥有适当的权限,并且成为该报告消费者角色或一个定制角色的一个成员。· 必须至少出版一个报告模型。· 一个互联网浏览器必须允许你下载文件。使用Report Builder开发的报告能够报告设计器所解释。十四、 报告模型设计器(Report Model Designer,SQL Server 2005中新增)报告模型设计器负责生成Report Builder需要的报告模型。一个模型抽象了内在数据的复杂性;例如,一个模型允许把表名和表中的列名映射成一个终端用户能够容易理解的业务术语。报告模型设计器宿主在Business Intelligence Development Studio(BIDS)或Visual Studio中,由开发人员所使用。实际上,BIDS是一个仅有Business Intelligence工程而没有任何语言工程的Visual Studio外壳。这种Business Intelligence工程之一是报告模型工程,它能够启动报告模型设计器并允许开发人员创建模型。在这个发行版本中,模型和相应的特定报告仅能够使用SQL Server数据源:SQL Server数据库引擎和SQL Server分析服务。然而,开发人员能够借助链接服务器或分析服务统一数据模型来克服这一限制和存取其它数据源。二者都提供了一个薄的抽象层并允许存取任何OLE DB或ODBC兼容的数据源(包括Oracle)。十五、 Report Designer(报告设计器)Report Designer是一个面向开发者的综合性的报告创作、预览和出版工具,它宿主在Business Intelligence Development Studio 或 Visual Studio中。为了组织报告开发过程,Report Designer以选项卡形式提供一个报告的三个视图:数据,布局和预览。数据选项卡帮助开发人员定义数据源和设计数据集查询。Report Designer提供三种拖放式图形化查询设计器以帮助进行SQL查询。布局选项卡帮助开发人员设计一个报告的图形化描述并且把图形化描述与数据关联起来。Report Designer提供一个拖放布局设计者和使用报告控件工具箱。布局设计很类似于Visual Studio为Windows和web应用程序提供的一个用户接口设计:你可以把报告控件拖放到一个报告中,然后根据需要安排它们,设置属性并且关联经数据选项卡设计的数据集。预览选项卡提供一个报告预览,以便开发人员能够据需要测试和调整报告。Report Designer还提供报告向导,它指导开发人员通过一系列步骤创建一个报告。然而,这个向导仅提供有限个数的布局方式供选择;不过报告开发者能够在向导结束后使用布局选项卡据需要修改该布局。最后,Report Designer允许开发人员把报告构建和发布到SSRS。注意 使用Report Designer开发的报告不能被Report Builder解释或编辑。十六、 Report Manager(报告管理器)Report Manager是一个基于web的报告存取和管理工具,用于存取一个Report Server的单个实例。用户能够使用报告管理器执行的一些操作,包括观察、查找和订阅报告、管理安全(报告存取和角色)、创建文件夹和在文件夹间移动报告、管理数据源、设置报告参数,等等。用户能够使用报告管理器执行的动作依赖于该用户的安全权限。调用报导管理器的默认URL是'http://<server>/reports'。包含Report Manager的二进制程序,页面及其它内容的默认位置是'C:Program FilesMicrosoft SQL ServerMSSQL.3Reporting ServicesReportManager'。尽管Report Manager提供有限的定制,但是既没有设计也没有提供足够的文档以支持定制。这使得其它公司可以使用若干定制选项,这可以结合:· 接受有限的Report Manager定制能力,例如修正它使用的式样表(默认地,位于'C:Program FilesMicrosoft SQL ServerMSSQL.3Reporting ServicesReportManagerStyles')并调整报告管理器通过站点设置(http://<server>/Reports/Pages/Settings.aspx)显示的名字。· 通过使用ReportingServicesWebUserInterface程序集中的类和利用它的未公开的功能理解报告管理器内在运行机制。· 编写定制管理页面来代替报告管理器中的一个或多个管理页面。· 编写一个显示一个公司信息的定制外观,并最终把用户引向报告管理器页面。· 编写一个定制报告管理应用程序来替换Report Manager。十七、 SQL Server Management Studio(SQL Server 2005中新增)SQL Server Management Studio提供一个基于Windows表单的集成环境来管理各种SQL Server组件。从SSRS角度来看,当用于管理单个SSRS实例时,该Management Studio功能类似于Report Manager。使用SQL Server Management Studio的优点包括针对SSRS web开发与发布的稳固的内容视图,轻微的改进性能,能够脚本化和'重新播放'管理任务,还有一个更具良好粒度的基于角色的安全设置。十八、 报告服务配置工具(SQL Server 2005中新增)该报告服务配置工具是一个Windows表单应用程序,它用于启动和停止Report Server Windows服务和重新设置报告服务器。例如,管理员能够改变Report Server的数据库和SQL Server名字,改变SSRS的Windows服务标识,并且改变用于存取Report Server 和报告管理器的虚拟目录。管理员应该能够启动报告服务配置工具,这可以通过使用'SQL Server 2005-> Configuration Tools->Reporting Services Configuration'菜单项或从SQL Server Configuration Manager中使用'SQL Server Reporting Services Properties'对话框中的'Configure'按钮来实现。十九、 RSPrint客户端控件(SQL Server 2005中新增)该RSPrint客户端ActiveX控件提供在客户端报告管理器中报告的打印功能。该控件提供一个打印对话框以便用户初始化一个打印工作,预览一个报告,指定要打印的页面,以及改变面边距。开发人员能够在代码中以编程方式存取这个控件以支持他们的应用程序中的报告打印功能。二十、 性能监视对象 'SSRS Windows and Web Service'包括提供性能计数器(提供关于报告处理和资源使用情况的信息)的性能对象。这些对象分别称为RS Windows服务和RS Web服务。注意 在SSRS 2000中,web服务性能对象称为报告服务,而Windows服务性能对象称为提交处理器。为了获取更为完整的图形化参考和搜集更多的信息,管理员还应该能够监视SQL Server,ASP.NET,处理器,内存和物理或逻辑磁盘计数器。二十一、 总结在本文中,我们较细致地讨论了SQL Server报告服务(SSRS)架构及各种组件。最后,表格3提供了有关SSRS组件的一个摘要。表格3.报告服务组件小结组件简短描述可编程接口提供通过SOAP和HTTP请求存取SSRS的功能。报告处理器便利了从数据检索到数据生成的一组报告生成操作。报告处理器调用其它组件,例如调用数据扩展以有助于报告生成。数据处理扩展从一个数据源检索报告的数据。开发人员能够开发其它定制数据处理扩展。命令行工具三个工具,用于管理任务脚本化,在报告服务安装期间被自动地安装。生成扩展把报告的中间格式(报告布局和数据的结合)转换成一种设备特定的格式,例如HTML。开发人员能够创建新的生成扩展。Report Server数据库存储报告定义,报告元数据,报告历史,缓冲的报告,快照,资源,安全设置,加密的数据,调度和提交数据,等等。Report Server临时数据库存储中间处理产品,缓存和数据。Scheduling and Delivery Processor监视事件(例如基于时间的订阅),与报告处理器协作以生成一个报告,和提交扩展协作以把调度报告提交到一个在订阅中指定的位置。提交扩展 把报告提交到特定的设备,例如邮件或一个文件系统。开发人员能够创建新的提交扩展。Report Manager提供基于web的报告存取和管理能力。调用Report Manager的默认URL是'http://<server>/reports'。Report Model Designer为在Report Builder中的使用生成报告模型。Report Builder提供拖放和易于使用的报告设计功能。Report Builder是一个运行于一个客户端计算机上的特定的终端用户报告创作和出版工具。Report Designer允许开发人员开发复杂的报告。Report Designer是一个综合性的报告创作和出版工具,它宿主于Business Intelligence Development Studio或Visual Studio中。安全扩展支持用户和组的认证和授权。开发人员能够(不包括SQL Server Express edition)创建新的安全扩展。SQL Server Management Studio 提供基于Windows表单的集成环境来管理SQL Server组件(包括SSRS)。从报告管理的角度来看,Management Studio的功能类似于Report Manager,但是还提供其它能力。Reporting Services Configuration Tool管理启动与停止Report Server Windows服务和重新设置报告服务器。这是一个Windows表单应用程序。WMI提供者提供一个组WMI接口来管理对报告服务器的设置,并且有助于在网络中发现SSRS实例。性能监视对象提供SSRS Windows和web服务性能的一个视图。