剖析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存儲在一個單獨的倉庫中,并因此導致經?;謴蚏DL;但是,損失快照數據能夠帶來消極的業務影響。例如,用戶可能使用快照的報告'相對靜止'數據的能力來作一些業務決定。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中的數據都能夠被以最?。ɑ蚝翢o)影響刪除掉。例如,這種用戶可能體驗到的最小的影響是帶來一種暫時的性能減弱(由于損失了緩存數據,而且失去了一個執行狀態)。執行狀態被存儲在表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服務性能的一個視圖。
