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