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