SQL Server 2005報(bào)告服務(wù)架構(gòu)的正確剖析
以下的文章主要介紹的是正確剖析SQL Server 2005報(bào)告服務(wù)架構(gòu)的實(shí)際操作步驟,SQL Server數(shù)據(jù)庫的報(bào)告服務(wù)(SSRS)主要是一個(gè)綜合性與可擴(kuò)展的報(bào)告平臺,它包括一組集成化的處理組件、可編程接口和工具。在本文中,我們將詳細(xì)地討論SQL Server報(bào)告服務(wù)(SSRS)架構(gòu)。
一、 簡介
SSRS是一個(gè)綜合性的可擴(kuò)展報(bào)告平臺,它包括一組集成的處理組件、編程接口和工具。處理組件是SSRS多層架構(gòu)的基礎(chǔ),并且能夠彼此交互以檢索數(shù)據(jù)、處理布局、生成和把一個(gè)報(bào)告提交到一個(gè)目標(biāo)。SSRS支持兩種類型的組件:
處理器-確保SSRS的一致性,并提供一個(gè)基礎(chǔ)結(jié)構(gòu)供開發(fā)人員添加新的功能(擴(kuò)展)。在當(dāng)前的SSRS發(fā)行版本中,處理器本身是不可擴(kuò)展的。
擴(kuò)展-由處理器調(diào)用的程序集,執(zhí)行特定的處理功能,例如數(shù)據(jù)檢索。開發(fā)人員能夠編寫定制擴(kuò)展。
描述了SQL Server 2005報(bào)告服務(wù)架構(gòu)圖;本文后面將更詳細(xì)地描述這些組件。該圖中的箭頭顯示在SSRS的內(nèi)部和外部的各組件(外部工具,應(yīng)用程序,服務(wù)和工具)之間的數(shù)據(jù)流。
SQL Server報(bào)告服務(wù)架構(gòu)。
二、 ReportServer Web和Windows服務(wù)
Report Server被實(shí)現(xiàn)為web服務(wù)和Windows服務(wù)的"共同體"。這些服務(wù)共同工作以宿主、處理和提交報(bào)告。
當(dāng)SSRS Windows服務(wù)啟動時(shí),它開始加載基本支持程序集(例如一個(gè)SQL數(shù)據(jù)提供者和接口庫),但是它不加載擴(kuò)展。在這個(gè)版本中,SSRS Windows服務(wù)處理加密和解密,用作調(diào)度和提交處理器的一個(gè)宿主。調(diào)度和提交處理器使用一個(gè)PollingInterval配置來監(jiān)視"事件"(例如定時(shí)訂閱)的SSRS目錄和事件表格。事件指示SSRS"醒來"并開始處理。
類似于任何.NET web服務(wù),SSRS web服務(wù)經(jīng)由IIS激活("喚醒")并且在ASP.NET工作進(jìn)程(aspnet_wp.exe)中執(zhí)行。可編程接口使"喚醒"事件更容易。
三、 可編程接口
報(bào)告服務(wù)可編程接口接收SOAP(經(jīng)由SSRS web服務(wù))和HTTP請求(經(jīng)由URL存取)。
SSRS 2005 web服務(wù)提供三種端點(diǎn):
http://localhost/ReportServer/ReportService.asmx的提供是為實(shí)現(xiàn)與SSRS2000的向后兼容性。
http://<server>/ReportServer/ReportService2005.asmx是SSRS 2005中新的管理端點(diǎn)。
http://<server>/ReportServer/ReportExecution2005.asmx是新的執(zhí)行端點(diǎn)。
一個(gè)端點(diǎn)名描述了相應(yīng)的使用目的。例如,執(zhí)行端點(diǎn)的設(shè)計(jì)是為了提供報(bào)告執(zhí)行(處理)接口,并且相應(yīng)地提供對函數(shù)(例如Render)的存取功能。Render函數(shù)把生成的報(bào)告以一個(gè)指定格式(例如HTML)的流形式返回。
可編程接口便利了從SSRS目錄中實(shí)現(xiàn)信息檢索和在SSRS組件之間的信息交換。
當(dāng)請求一個(gè)報(bào)告時(shí)(或者通過交互方式或者通過調(diào)度和提交處理器),可編程接口初始化該報(bào)告處理器組件并開始處理一個(gè)報(bào)告。
四、 Report Processor(報(bào)告處理器)
報(bào)告處理器把一個(gè)Report Server的所有組件綁定到一起,并且負(fù)責(zé)在SSRS內(nèi)部的緩沖。緩沖是指,當(dāng)一個(gè)用戶打開該報(bào)告時(shí),SSRS能夠保持處理過的報(bào)告的一個(gè)副本并且返回該副本。緩沖能夠縮短檢索一個(gè)報(bào)告要求的時(shí)間,特別如果該報(bào)告很大或經(jīng)常被存取的情況下。
所有的報(bào)告緩存存儲在SSRS目錄(具體地說,是存儲在ReportServerTempDB數(shù)據(jù)庫)下,并且能夠在SQL Server和Report Server重啟時(shí)仍然存在。
報(bào)告處理器執(zhí)行下列操作:
執(zhí)行-檢索一個(gè)報(bào)告定義,并且通過數(shù)據(jù)處理擴(kuò)展把它與檢索的數(shù)據(jù)相結(jié)合。該操作生成一個(gè)中間格式。
生成-使用生成擴(kuò)展把中間格式生成為一個(gè)請求的輸出格式。
模型處理-這類似Report Builder生成的報(bào)告的執(zhí)行操作,其中包含一個(gè)語義模型(或一個(gè)簡單的模型,它用作一個(gè)報(bào)告的一個(gè)數(shù)據(jù)源)和一個(gè)語義查詢。語義查詢是指針對一個(gè)模型的一個(gè)查詢;就象一個(gè)SQL查詢一樣,它生成一個(gè)報(bào)告的數(shù)據(jù)集。
下面是報(bào)告處理器響應(yīng)用戶請求的方式:
新的交互式報(bào)告請求-中間格式被生成并被傳遞以便生成擴(kuò)展;用戶接收生成的報(bào)告。
請求生成緩存或快照-中間格式被生成并被存儲在數(shù)據(jù)庫中。
請求緩沖的報(bào)告或快照-中間格式被從緩存(或快照)中檢索并被傳遞以便生成擴(kuò)展;用戶接收生成的報(bào)告。
剖析SQL Server 2005報(bào)告服務(wù)架構(gòu)五、 命令行工具
在安裝報(bào)告服務(wù)期間,自動地安裝三個(gè)管理助理工具:
rs.exe-宿主腳本操作。例如,開發(fā)人員能夠創(chuàng)建VB.NET腳本以發(fā)布一個(gè)組報(bào)告。
rsconfig.exe-用于修改到Report Server數(shù)據(jù)庫的加密的連接信息。
rskeymgmt.exe-備份/恢復(fù)加密數(shù)據(jù)的對稱密鑰,該數(shù)據(jù)為一個(gè)Report Server所用;或如果該密鑰被丟失的話,刪除加密的數(shù)據(jù)。
注意 SSRS 2005已經(jīng)放棄了rsactivate.exe工具,這個(gè)工具在以前的版本中用于在web場所下激活新的SSRS實(shí)例。在SSRS 2005中,激活是使用報(bào)告服務(wù)配置工具實(shí)現(xiàn)的。
六、 報(bào)告服務(wù)擴(kuò)展
一個(gè)擴(kuò)展是一個(gè).NET程序集,為報(bào)告處理器所調(diào)用以執(zhí)行某種處理功能。存在若干類型的擴(kuò)展:數(shù)據(jù)處理,提交,生成,安全(認(rèn)證和授權(quán)),SemanticQuery,ModelGeneration和EventProcessing,等等。
對于一個(gè)被Report Server使用的擴(kuò)展來說,必須把它安裝到(假定是默認(rèn)的SSRS配置)"C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin"目錄下,并且在"C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\rsreportserver.config"下進(jìn)行配置。
一個(gè)擴(kuò)展文件名的最后一部分通常暗示了該擴(kuò)展的功能。例如,HTML生成擴(kuò)展的文件名是"Microsoft.ReportingServices.HtmlRendering.dll"。
定制擴(kuò)展允許開發(fā)人員添加在SSRS中不能用的補(bǔ)充功能。例如,一個(gè)公司能夠?qū)崿F(xiàn)一個(gè)把報(bào)告提交到一個(gè)電話或一個(gè)傳真的擴(kuò)展。
注意 該版本的SSRS不允許定制SemanticQuery,ModelGeneration或EventProcessing擴(kuò)展。
剖析SQL Server 2005報(bào)告服務(wù)架構(gòu)七、 數(shù)據(jù)處理擴(kuò)展
數(shù)據(jù)處理擴(kuò)展負(fù)責(zé)從報(bào)告數(shù)據(jù)源檢索數(shù)據(jù)。詳細(xì)說來,這些任務(wù)包括打開到一個(gè)數(shù)據(jù)源的連接,分析查詢并返回字段名,傳遞參數(shù),以及檢索和遍歷數(shù)據(jù)集等。表格1概括了包括在SSRS中以及可以用之配置的數(shù)據(jù)處理擴(kuò)展。
表格1.能夠使用SSRS進(jìn)行配置的數(shù)據(jù)處理擴(kuò)展
擴(kuò)展 描述/注意事項(xiàng)
SQL Server 連接到并且從SQL Server數(shù)據(jù)庫引擎(從7.0到2005版本)中檢索數(shù)據(jù)。
OLE DB 連接到并且從OLE DB兼容的數(shù)據(jù)源中檢索數(shù)據(jù)。
Microsoft SQL Server Analysis 連接到并且從SQL Server分析服務(wù)2000和2005中檢索數(shù)據(jù)。對于分析服務(wù)2005來說,這個(gè)擴(kuò)展支持Multidimensional Expressions(MDX)和Data Mining Expressions(DMX)。對于分析服務(wù)2000來說,這個(gè)擴(kuò)展僅支持非參數(shù)化MDX。
Oracle 連接到并且從一個(gè)Oracle數(shù)據(jù)庫中檢索數(shù)據(jù);這時(shí),要求在一臺安裝有Reporting Server的計(jì)算機(jī)上安裝Oracle客戶端8i Release 3(8.1.7)。
ODBC 連接到并且從ODBC兼容的數(shù)據(jù)源中檢索數(shù)據(jù)。
XML 從能夠通過URL存取的任何XMLweb源(例如一個(gè)web服務(wù)器)中檢索XML數(shù)據(jù)。
所有的擴(kuò)展(它們都(除了XML)使用SSRS進(jìn)行安裝)都利用了相應(yīng)的.NET數(shù)據(jù)提供者。Microsoft.ReportingServices.DataExtensions庫提供包裝類,這些類負(fù)責(zé)提供到.NET數(shù)據(jù)提供者的SSRS數(shù)據(jù)處理擴(kuò)展接口。
開發(fā)人員可以創(chuàng)建其它定制數(shù)據(jù)處理擴(kuò)展。
剖析SQL Server 2005報(bào)告服務(wù)架構(gòu)八、 提交擴(kuò)展
提交擴(kuò)展負(fù)責(zé)把報(bào)告提交到特定的設(shè)備或格式。在RS中的擴(kuò)展包括電子郵件和文件共享提交。當(dāng)用戶(或管理員)創(chuàng)建一個(gè)訂閱時(shí),選擇提交方法及相應(yīng)的擴(kuò)展。
表格2概括了這些(包括在SSRS中的和使用SSRS進(jìn)行配置的)提交擴(kuò)展。
表格2.SSRS包括的提交擴(kuò)展
擴(kuò)展 目的
郵件提交 把一個(gè)生成的報(bào)告提交到一個(gè)郵件收件箱。允許設(shè)置提交選項(xiàng)-控制輸出格式以及是否該報(bào)告被提交為一個(gè)鏈接或作為一個(gè)附件。
文件共享提交 把一個(gè)生成的報(bào)告提交到一個(gè)共享文件夾。允許設(shè)置提交選項(xiàng)-控制一個(gè)目的地文件夾路徑,一個(gè)輸出格式以及是否該報(bào)告能夠覆蓋一個(gè)更舊版本或被添加為一個(gè)新的版本。
開發(fā)人員可以創(chuàng)建其它定制提交擴(kuò)展。
【編輯推薦】
- SQL Server 2008 FileStream支持“真功夫版”
- SQL Server 2008稀疏列與列集的經(jīng)驗(yàn)總結(jié)
- SQL Server 2008 CDC功能的主要作用是什么?
- SQL Server 客戶端的IP地址限制訪問的破解
- SQL Server數(shù)據(jù)文件監(jiān)控與數(shù)據(jù)文件的查看

















