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