剖析SQL Server 2005中的報告服務架構
開發(fā)人員可以創(chuàng)建其它定制提交擴展。
九、 生成擴展Report Server生成擴展負責把一個報告的設計和數(shù)據(jù)轉換成一種設備特定的格式。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的本機二進制格式。因為最后的生成階段僅是與數(shù)據(jù)處理松耦合的,它能夠使用戶為同一個報告選擇不同的生成選項而不需要重新查詢數(shù)據(jù)源。另外,開發(fā)人員還能夠創(chuàng)建其它定制生成擴展。十、 安全擴展 本文經常使用術語'安全擴展',好象它是一個概念。事實上,存在兩種相互聯(lián)系的擴展:· 認證擴展,負責建立用戶標識· 授權擴展,負責檢查是否一個標識能夠存取一個特定SSRS資源SSRS包括一個基于Windows認證的安全擴展。在建立一個用戶標識后,一個授權過程決定是否配置一個Windows用戶(或包含一個用戶的一個Windows組)以存取一個報告服務器上的一個特別資源。開發(fā)人員能夠創(chuàng)建其它定制安全擴展。一個SSRS實例僅能使用一個安全擴展。也就是說,或者使用Windows或者使用一個定制擴展,同一時刻只能使用一個。十一、 Report Server數(shù)據(jù)庫SSRS目錄下包括兩個數(shù)據(jù)庫:Report Server數(shù)據(jù)庫(默認名是ReportServer)和ReportServer臨時數(shù)據(jù)庫(默認名是ReportServerTempDB)。Report Server數(shù)據(jù)庫是一個SQL Server數(shù)據(jù)庫,它能夠存儲SSRS配置部分,報告定義,報告元數(shù)據(jù),報告歷史,緩存政策,快照,資源,安全設置,加密的數(shù)據(jù),調度和提交數(shù)據(jù),以及擴展信息。注意 盡管用戶能夠直接存取在SSRS目錄下的數(shù)據(jù)庫并且能夠直接修改SSRS使用的對象;但在實踐中,不推薦(或不支持)這樣做,因為在SSRS目錄下的內在數(shù)據(jù)和結構不能被保證與不同版本的SSRS、服務包或補丁相兼容。請把Report Server數(shù)據(jù)庫當作產品數(shù)據(jù)庫之一來對待。盡管許多開發(fā)人員都習慣把RDL存儲在一個單獨的倉庫中,并因此導致經?;謴蚏DL;但是,損失快照數(shù)據(jù)能夠帶來消極的業(yè)務影響。例如,用戶可能使用快照的報告'相對靜止'數(shù)據(jù)的能力來作一些業(yè)務決定。SSRS使用的另一個數(shù)據(jù)庫是Report Server臨時數(shù)據(jù)庫。這個數(shù)據(jù)庫負責存儲中間處理產品,例如緩沖的報告、會話和執(zhí)行數(shù)據(jù)等。注意 為了把臨時快照存儲在文件系統(tǒng)而不是數(shù)據(jù)庫中,管理員應該完成下列步驟。首先,修改RSReportServer.config,并把WebServiceUseFileShareStorage和WindowsServiceUseFileShareStorage設置為True。然后,把FileShareStorageLocation設置為一個全稱路徑;默認路徑是'C:Program FilesMicrosoft SQL ServerMSSQL.3Reporting ServicesRSTempFiles'。不同于SQL Server的tempdb,當在ReportServerTempDB中的數(shù)據(jù)存儲時限超過SQL Server時,Report Server將會重啟。而且,Report Server能夠周期性地清除ReportServerTempDB中的到期的和孤立的數(shù)據(jù)。在任何時間,所有的ReportServerTempDB中的數(shù)據(jù)都能夠被以最小(或毫無)影響刪除掉。例如,這種用戶可能體驗到的最小的影響是帶來一種暫時的性能減弱(由于損失了緩存數(shù)據(jù),而且失去了一個執(zhí)行狀態(tài))。執(zhí)行狀態(tài)被存儲在表SessionData中。執(zhí)行狀態(tài)結果的損失可能導致一個錯誤:'Execution 'j4j3vfblcanzv3qzcqhvml55' cannot be found (rsExecutionNotFound)'。為了解決執(zhí)行狀態(tài)損失問題,用戶需要重新打開一個報告。提示 SSRS不能恢復數(shù)據(jù)庫中刪除的ReportServerTempDB或表。為了快速地從數(shù)據(jù)庫中對象的錯誤刪除中進行恢復,應該保留一個腳本或一個空ReportServerTempDB的備份。在一個向外擴展的發(fā)布中,SSRS目錄是被跨該發(fā)布中所有的報告服務器共享的。十二、 調度和提交處理器調度和提交處理器宿主在SSRS Windows服務中,負責進行事件監(jiān)視。當該調度和提交處理器收到一個事件時,它與報告處理器協(xié)作共同生成一個報告。在生成一個報告后,調度和提交處理器使用提交擴展來提交該報告。調度和提交處理器利用SQL Server Agent作為一個調度引擎。這個調度是基于擁有該調度的Report Server的本地時間。當一個管理員創(chuàng)建一個新的調度時,SSRS創(chuàng)建一個SQL Server Agent作業(yè)以運行于請求的調度。然后,SSRS在ReportServer數(shù)據(jù)庫的Schedule表中增加一個新行。該行的ScheduleId字段是該作業(yè)的標識符。主管能夠調度訂閱、報告歷史和快照執(zhí)行。當調度時間已到,SQL Server Agent通過執(zhí)行該調度作業(yè)生成一個事件。然后,這個作業(yè)在ReportServer數(shù)據(jù)庫的事件表格中插入一個行。這個行擔當一個調度和提交處理器的事件。調度和提交處理器每隔PollingInterval秒檢查事件表并初始化適當?shù)膭幼饕皂憫粋€事件。注意 這個PollingInterval是在rsreportserver.config配置文件中指定的,默認情況下,被設置為10秒。當SSRS Windows服務沒有運行(調度和提交處理器沒有處理事件)或SQL Server Agent沒有運行(這個代理沒有生成事件)時,調度和提交處理將會'中斷'。注意 當SSRS Windows服務并沒有運行而SQL Server Agent已運行時,SQL Server Agent的作業(yè)歷史將顯示:該被調度的請求('插入事件')成功運行。該作業(yè)仍然會成功,盡管被調度的操作能完成,因為調度和提交處理器并沒有運行來處理該事件。
十三、 Report Builder(SQL Server 2005中新增)在以前的SSRS版本中最常用的一個特征是開發(fā)終端報告的能力。微軟在SSRS 2005中實現(xiàn)了這一功能。Report Builder是一個ClickOnce,特定的終端用戶報告創(chuàng)作和出版工具,它提供拖放且容易使用的報告設計功能。注意 你可以通過搜索http://www.microsoft.com和閱讀http://msdn.microsoft.com/msdnmag/issues/04/05/clickonce/default.aspx查找更多的有關ClickOnce應用程序的信息。作為一個典型的ClickOnce應用程序,Report Builder是從一個瀏覽器中發(fā)布的,并在一個客戶端計算機上執(zhí)行。在安裝期間,Report Builder不要求管理員權限,它運行于一個.NET代碼存取安全的封裝中。為了發(fā)布Report Builder,點擊報告管理器的工具欄上的'Report Builder'按鈕。作為選擇,你可以使用'http://<server>/ReportServer/ReportBuilder/ReportBuilder.application'URL來啟動Report Builder。Report Builder被發(fā)布 到'C:Documents and Settings<UserName>Local settingsApps2.0<obfuscated directory>'路徑下。在你可以使用Report Builder之前:· 你必須擁有適當?shù)臋嘞?,并且成為該報告消費者角色或一個定制角色的一個成員?!?必須至少出版一個報告模型?!?一個互聯(lián)網瀏覽器必須允許你下載文件。使用Report Builder開發(fā)的報告能夠報告設計器所解釋。十四、 報告模型設計器(Report Model Designer,SQL Server 2005中新增)報告模型設計器負責生成Report Builder需要的報告模型。一個模型抽象了內在數(shù)據(jù)的復雜性;例如,一個模型允許把表名和表中的列名映射成一個終端用戶能夠容易理解的業(yè)務術語。報告模型設計器宿主在Business Intelligence Development Studio(BIDS)或Visual Studio中,由開發(fā)人員所使用。實際上,BIDS是一個僅有Business Intelligence工程而沒有任何語言工程的Visual Studio外殼。這種Business Intelligence工程之一是報告模型工程,它能夠啟動報告模型設計器并允許開發(fā)人員創(chuàng)建模型。在這個發(fā)行版本中,模型和相應的特定報告僅能夠使用SQL Server數(shù)據(jù)源:SQL Server數(shù)據(jù)庫引擎和SQL Server分析服務。然而,開發(fā)人員能夠借助鏈接服務器或分析服務統(tǒng)一數(shù)據(jù)模型來克服這一限制和存取其它數(shù)據(jù)源。二者都提供了一個薄的抽象層并允許存取任何OLE DB或ODBC兼容的數(shù)據(jù)源(包括Oracle)。十五、 Report Designer(報告設計器)Report Designer是一個面向開發(fā)者的綜合性的報告創(chuàng)作、預覽和出版工具,它宿主在Business Intelligence Development Studio 或 Visual Studio中。為了組織報告開發(fā)過程,Report Designer以選項卡形式提供一個報告的三個視圖:數(shù)據(jù),布局和預覽。數(shù)據(jù)選項卡幫助開發(fā)人員定義數(shù)據(jù)源和設計數(shù)據(jù)集查詢。Report Designer提供三種拖放式圖形化查詢設計器以幫助進行SQL查詢。布局選項卡幫助開發(fā)人員設計一個報告的圖形化描述并且把圖形化描述與數(shù)據(jù)關聯(lián)起來。Report Designer提供一個拖放布局設計者和使用報告控件工具箱。布局設計很類似于Visual Studio為Windows和web應用程序提供的一個用戶接口設計:你可以把報告控件拖放到一個報告中,然后根據(jù)需要安排它們,設置屬性并且關聯(lián)經數(shù)據(jù)選項卡設計的數(shù)據(jù)集。預覽選項卡提供一個報告預覽,以便開發(fā)人員能夠據(jù)需要測試和調整報告。Report Designer還提供報告向導,它指導開發(fā)人員通過一系列步驟創(chuàng)建一個報告。然而,這個向導僅提供有限個數(shù)的布局方式供選擇;不過報告開發(fā)者能夠在向導結束后使用布局選項卡據(jù)需要修改該布局。最后,Report Designer允許開發(fā)人員把報告構建和發(fā)布到SSRS。注意 使用Report Designer開發(fā)的報告不能被Report Builder解釋或編輯。十六、 Report Manager(報告管理器)Report Manager是一個基于web的報告存取和管理工具,用于存取一個Report Server的單個實例。用戶能夠使用報告管理器執(zhí)行的一些操作,包括觀察、查找和訂閱報告、管理安全(報告存取和角色)、創(chuàng)建文件夾和在文件夾間移動報告、管理數(shù)據(jù)源、設置報告參數(shù),等等。用戶能夠使用報告管理器執(zhí)行的動作依賴于該用戶的安全權限。調用報導管理器的默認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表單的集成環(huán)境來管理各種SQL Server組件。從SSRS角度來看,當用于管理單個SSRS實例時,該Management Studio功能類似于Report Manager。使用SQL Server Management Studio的優(yōu)點包括針對SSRS web開發(fā)與發(fā)布的穩(wěn)固的內容視圖,輕微的改進性能,能夠腳本化和'重新播放'管理任務,還有一個更具良好粒度的基于角色的安全設置。十八、 報告服務配置工具(SQL Server 2005中新增)該報告服務配置工具是一個Windows表單應用程序,它用于啟動和停止Report Server Windows服務和重新設置報告服務器。例如,管理員能夠改變Report Server的數(shù)據(jù)庫和SQL Server名字,改變SSRS的Windows服務標識,并且改變用于存取Report Server 和報告管理器的虛擬目錄。管理員應該能夠啟動報告服務配置工具,這可以通過使用'SQL Server 2005-> Configuration Tools->Reporting Services Configuration'菜單項或從SQL Server Configuration Manager中使用'SQL Server Reporting Services Properties'對話框中的'Configure'按鈕來實現(xiàn)。十九、 RSPrint客戶端控件(SQL Server 2005中新增)該RSPrint客戶端ActiveX控件提供在客戶端報告管理器中報告的打印功能。該控件提供一個打印對話框以便用戶初始化一個打印工作,預覽一個報告,指定要打印的頁面,以及改變面邊距。開發(fā)人員能夠在代碼中以編程方式存取這個控件以支持他們的應用程序中的報告打印功能。二十、 性能監(jiān)視對象 'SSRS Windows and Web Service'包括提供性能計數(shù)器(提供關于報告處理和資源使用情況的信息)的性能對象。這些對象分別稱為RS Windows服務和RS Web服務。注意 在SSRS 2000中,web服務性能對象稱為報告服務,而Windows服務性能對象稱為提交處理器。為了獲取更為完整的圖形化參考和搜集更多的信息,管理員還應該能夠監(jiān)視SQL Server,ASP.NET,處理器,內存和物理或邏輯磁盤計數(shù)器。二十一、 總結在本文中,我們較細致地討論了SQL Server報告服務(SSRS)架構及各種組件。最后,表格3提供了有關SSRS組件的一個摘要。表格3.報告服務組件小結組件簡短描述可編程接口提供通過SOAP和HTTP請求存取SSRS的功能。報告處理器便利了從數(shù)據(jù)檢索到數(shù)據(jù)生成的一組報告生成操作。報告處理器調用其它組件,例如調用數(shù)據(jù)擴展以有助于報告生成。數(shù)據(jù)處理擴展從一個數(shù)據(jù)源檢索報告的數(shù)據(jù)。開發(fā)人員能夠開發(fā)其它定制數(shù)據(jù)處理擴展。命令行工具三個工具,用于管理任務腳本化,在報告服務安裝期間被自動地安裝。生成擴展把報告的中間格式(報告布局和數(shù)據(jù)的結合)轉換成一種設備特定的格式,例如HTML。開發(fā)人員能夠創(chuàng)建新的生成擴展。Report Server數(shù)據(jù)庫存儲報告定義,報告元數(shù)據(jù),報告歷史,緩沖的報告,快照,資源,安全設置,加密的數(shù)據(jù),調度和提交數(shù)據(jù),等等。Report Server臨時數(shù)據(jù)庫存儲中間處理產品,緩存和數(shù)據(jù)。Scheduling and Delivery Processor監(jiān)視事件(例如基于時間的訂閱),與報告處理器協(xié)作以生成一個報告,和提交擴展協(xié)作以把調度報告提交到一個在訂閱中指定的位置。提交擴展 把報告提交到特定的設備,例如郵件或一個文件系統(tǒng)。開發(fā)人員能夠創(chuàng)建新的提交擴展。Report Manager提供基于web的報告存取和管理能力。調用Report Manager的默認URL是'http://<server>/reports'。Report Model Designer為在Report Builder中的使用生成報告模型。Report Builder提供拖放和易于使用的報告設計功能。Report Builder是一個運行于一個客戶端計算機上的特定的終端用戶報告創(chuàng)作和出版工具。Report Designer允許開發(fā)人員開發(fā)復雜的報告。Report Designer是一個綜合性的報告創(chuàng)作和出版工具,它宿主于Business Intelligence Development Studio或Visual Studio中。安全擴展支持用戶和組的認證和授權。開發(fā)人員能夠(不包括SQL Server Express edition)創(chuàng)建新的安全擴展。SQL Server Management Studio 提供基于Windows表單的集成環(huán)境來管理SQL Server組件(包括SSRS)。從報告管理的角度來看,Management Studio的功能類似于Report Manager,但是還提供其它能力。Reporting Services Configuration Tool管理啟動與停止Report Server Windows服務和重新設置報告服務器。這是一個Windows表單應用程序。WMI提供者提供一個組WMI接口來管理對報告服務器的設置,并且有助于在網絡中發(fā)現(xiàn)SSRS實例。性能監(jiān)視對象提供SSRS Windows和web服務性能的一個視圖。
