SQL Server數(shù)據(jù)庫中正確利用示例報表服務(wù)報表
在此篇文章里我們主要向你提供的是在SQL Server數(shù)據(jù)庫中利用的示例報表實際操作流程,以便使你熟悉在基于SQL Server報表服務(wù)中所展示的更加高級的圖形設(shè)計器特性,微軟給廣大公眾提供了三個基本的示例報表類型。
***個在SQL Server中利用AdventureWorks數(shù)據(jù)庫作為一個數(shù)據(jù)源,它需要單獨下載。第二個演示了點對點報表功能(還利用從AdventureWorks數(shù)據(jù)庫獲得的數(shù)據(jù)),但是,因為它對報表生成器(在SQL Server 2報表服務(wù)中沒有)的依賴,它不在我們的討論范圍內(nèi)。
第三個是用于SQL Server數(shù)據(jù)庫管理(讓你能夠在任意數(shù)據(jù)庫中生成schema和表目錄)并依賴于master數(shù)據(jù)庫作為它的數(shù)據(jù)源。
上面所提到的所有示例都是可免費(fèi)下載的,基于Windows Installer的包SQLServerSamples.msi(在x32和x64位版本中可用)。調(diào)用這個包會觸發(fā)InstallShield驅(qū)動向?qū)?,提示你接受Microsoft Permissive License和指定一個目標(biāo)文件夾(它默認(rèn)設(shè)置為Program Files\Microsoft SQL Server\90\Samples)。
安裝進(jìn)程在這個地址下創(chuàng)建一個目錄結(jié)構(gòu),在Reporting services\Report Sample文件夾下包含三個子文件夾叫做AdventureWorks Sample Reports、Report Builder Sample Reports和 Server Management Sample Reports(又分為Execution Log Sample Reports和 Server Management Sample Reports)。你可以從商業(yè)智能開發(fā)套件中訪問存儲在這些路徑下的任何報表(通過在File菜單選擇Open->Project/Solution…項并指向一個合適的解決方案或項目文件)。
讓我們詳細(xì)看看AdventureWorks示例報表(在你詳細(xì)分析它們之前,推薦你參考MSDN Library中包含的描述AdventureWorks schema的文檔,這將幫助你理解它的表的結(jié)構(gòu)和目的,以及它們之間的關(guān)系)。重要的是要注意到,其中一些包含(有時看起來是)不穩(wěn)定的輸出,這可能是不必要的混淆引起的。我們將簡短地分辨它們,但是為了正確地介紹它們的缺點,我們首先需要逐步進(jìn)行它們的部署(這反過來要求修改它們的默認(rèn)配置)。
通過從商業(yè)智能開發(fā)套件(記住,如果你使用的是Windows Vista,你應(yīng)該以提升的權(quán)限來啟動它)里打開Adventure Works Sample Reports解決方案(AdventureWorks Sample Reports.sln)來啟動。
當(dāng)這個解決方案和它的項目被加載后,你應(yīng)該注意到一列預(yù)先定義的報表(Company Sales.rdl、 Employee Sales Summary.rpl、Product Catalog.rpl、Product Line Sales.rpl、Sales Order Detail.rpl、Sales Reason Comparisons.rpl和 Territory Sales Drilldown.rpl)以及共享數(shù)據(jù)源(AdventureWorks.rds和AdventureWorksAS.rds)出現(xiàn)在Solution Explorer窗口中。為了正確地部署所有這些報表,你需要調(diào)整項目的Property Pages對話框中General部分的TargetServerURL項的值,將它從http://localhost/reportserver改為http://localhost/ReportServer$instance_name(instance_name代表存放報表服務(wù)器數(shù)據(jù)庫的SQL Server數(shù)據(jù)庫 實例的名稱)。
此外,你應(yīng)該將OverwriteDataSources屬性設(shè)置為True。而且,你還需要改變指向AdventureWorks.rds共享數(shù)據(jù)源的本地AdventureWorks數(shù)據(jù)庫的連接字符串,將它從原來的Data Source=(local);Initial Catalog=AdventureWorks改為Data Source=localhost\instance_name;Initial Catalog=AdventureWorks。
當(dāng)這些修改被應(yīng)用時,你可以使用Solution Explorer窗口中報表的上下文敏感菜單中的Deploy選項發(fā)布單個報表到本地報表服務(wù)器網(wǎng)站上(作為結(jié)果,它們將出現(xiàn)在SQL Server報表服務(wù)首頁的AdventureWorks Sample Reports文件夾下)。
有問題的報表包括Product Line Sales和Territory Sales Drilldown。***個本來是要提供前五名銷售人員和商店(在產(chǎn)品分類和子類的基礎(chǔ)上,在一個任意階段中),以及相應(yīng)的圖表、表、多值參數(shù)、計算字段和鉆取鏈接(這些特性的***一個要求部署Employee Sales Summary報表)。
不幸的是,用于計算銷售數(shù)量的基本查詢是不正確的。修正這個問題涉及到根據(jù)T-SQL語句修改TopEmployees和TopCustomers數(shù)據(jù)集(通過商業(yè)智能開發(fā)套件的設(shè)計器界面中的Data標(biāo)簽頁)。為
了能夠顯示其它有缺陷的報表(它的***視圖顯示給你在每一個基本方面的整個銷售數(shù)字,以及向下鉆取到銷售人員和訂單數(shù)字級別,還有向下鉆取到每個訂單細(xì)節(jié)的能力),你需要部署Territory Sales Drilldown和Sales Order Detail報表(因為它們被鏈接了)。在這種情況下的主要問題是Territory Sales頁面上顯示的單個訂單銷售數(shù)字和相應(yīng)的Sales Order Detail間的差異。
顯然,這個問題是由于AdventureWorks數(shù)據(jù)庫中的錯誤而導(dǎo)致的(顯然在SQL Server 2008版本中的示例報表已經(jīng)解決了這些問題)。盡管有這些缺陷,示例AdventureWorks報表提供了一個機(jī)會來熟悉一些更加高級的特性,例如有條件的格式化(Product Catalog、Territory Sales)、鉆取和向下鉆取(Company Sales, Employee Sales Summary、Product Line Sales、Sales Order Detail、Territory Sales)、多數(shù)據(jù)集(Employee Sales Summary)、動態(tài)或多值參數(shù)(Employee Sales Summary, Product Line Sales)、或文檔地圖(Product Catalog)。
現(xiàn)在讓我們將注意力轉(zhuǎn)移到服務(wù)器管理報表。正如基于AdventureWorks的示例,它們是作為SQLServerSamples.msi Windows Installer包的一部分來安裝的,所以假如你已經(jīng)將它安裝在放置SQL Server 2005 Express Edition的機(jī)器上的話,那么你應(yīng)該可以在Reporting Services\Report Samples\Sever Management Sample Reports子文件夾下找到它們(在Program Files\Microsoft SQL Server\90\Samples文件夾下)。
Server Management Sample Reports解決方案包含兩個我們感興趣的報表。(你還能在那看到Execution Log報表,它用于分析報表服務(wù)器的執(zhí)行日志數(shù)據(jù),這不在我們的討論范圍內(nèi),因為它們依賴于集成服務(wù),而它是在SQL Server數(shù)據(jù)庫中沒有的)。***個,叫做Schema Table Extended Properties,列出任意選定數(shù)據(jù)庫的schema、表、字段和它們的屬性。第二個,標(biāo)簽名為Columns by Table and Schema Subreport,它實際上是***個所使用的一個子報表(它使得你可以顯示任意表中一個字段的屬性,只要你指定它的名稱、schema和存放它的數(shù)據(jù)庫)。
為了部署和檢查它們,通過商業(yè)智能開發(fā)套件的File 菜單中的Open->Project/Solution…項加載Server Management Sample Reports.sln來啟動。與以前一樣,你將需要修改Server Management Sample Reports項目屬性(通過它的Property Pages對話框),包括TargetServerURL(它應(yīng)該從它的默認(rèn)改為http://localhost/ReportServer$instance_nam)和OverwriteDataSources屬性(它應(yīng)該設(shè)置為True)。
此外,你需要改變master.rds共享數(shù)據(jù)源的連接字符串,由Data Source=(local);Initial Catalog=master改為Data Source=localhost\instance_name;Initial Catalog=master。
作為結(jié)果,一個標(biāo)簽為Server Management Sample Reports的新文件夾應(yīng)該出現(xiàn)在你的SQL Server數(shù)據(jù)庫報表服務(wù)首頁中。當(dāng)你顯示了它的內(nèi)容,你將可以在那里看到Schema Table Extended Properties報表,它允許你選擇一個你想顯示其schema和字段的目標(biāo)數(shù)據(jù)庫(從DatabaseName列表框)。在選擇了之后,你可以以向下鉆取的方式探究每個架構(gòu)和字段(到它的屬性級)。
【編輯推薦】