2013年12月11日 星期三

[SQL Server 2008R2][SSRS] 報表部署

報表生命週期的第一階段「報表開發」是利用使用者介面 ( 報表設計師、報表產生器 ) 根據使用者需求設計的報表格式。建立好報表後,為了讓使用者能夠取得報表,必須先經過「報表部署」的階段,才能將報表定義檔發佈至報表伺服器中。設計完的報表定義必須利用「部署」的步驟,才能將設計完成的報表儲存到報表伺服器資料庫,以便進行後續的管理作業。

在部署報表之後,使用者應只具有報表的存取權限,至於資料來源則需要設定存取限制,並使用最小權限原則,也就是僅給予使用者進行各項操作所需的存取資料庫伺服器的最小權限。因此不建議將資料來源的認證模式設為 Windows 整合驗證,因為這表示每個報表使用者都具有資料來源的存取權限 ( 要購買的 Client 授權數會很多 )。
由於在訂閱派送以及快取處理時都需要輸入具名的認證資訊,因此使用單一使用者帳號密碼以進行安全性管理。

為避免增加上線伺服器查詢負擔之外,可利用快取或是排程執行來取代隨選立即執行,利用排程可以將執行的時程排在離峰時段,以減輕系統負擔。

若是報表有歷史報表保存的需求 ( 即使報表來源資料異動也不可以變動報表內容,主要是財務報表有此需求 ),則須啟用報表快照集 ( Snapshot )。使用者即可直接從快照集轉譯報表,而不需要每次都從上線環境存取資料後再轉譯報表。


使用報表設計師 ( BIDS ) 部署
透過報表專案的「部署屬性」設定與執行「部署」,便能輕鬆的將報表定義 (.rdl )、資料來源檔 ( .rds )、資料集檔 ( .rsd )、報表組件,以及圖檔存入報表伺服器資料庫。

發佈報表前,作者必須要擁有發佈報表的權限。報表伺服器管理員必須先將報表作者加入發行人伺服器角色 ( Publisher Server Role ) 以賦予發佈報表之權限

一般來說,企業業報表部署的位置會先經過系統整合測試 ( SIT ) → 使用者認可測試 ( UAT ) → 正式上線三個階段。報表不應一次部署至正式環境,應根據不同測試階段部署至不同的資料夾中。例如系統整合測試階段會部署至只有資訊部門有權限的資料夾中,使用者測試則是部署至業務需求提出者有權限的資料夾中,最後正式上線才是發佈至全公司的環境。

為了因應不同階段的部署位置設定需求,BIDS 的報表設計師提供三種組態:DebugLocal、Debug 以及 Release。

  1. DebugLocal 組態主要是使用在報表設計的系統整合測試 ( SIT ) 階段。
  2. Debug 組態則是用在使用者測試 ( UAT ) 階段。
  3. Release 組態則是用來發佈報表至上線環境或資料夾中。

在方案總管的專案名稱處,按滑鼠右鍵選取「屬性」,即可進入組態設定畫面。



上方「組態」區域會顯示目前使用中的組態模式,若要同時部署至多個組態也可以使用「多重組態」選項。

部署組態的設定屬性內容:

  • StartItme : 指定在執行專案時,在預覽視窗或是瀏覽器視窗顯示的報表項目的偵錯選項。在專案中擁有不只一張報表時才需要設定
  • OverwriteDataSource : 當在同個資料夾已部署了同樣名稱的資料來源時,是否要覆寫該資料來源。基本上,在系統上線後應該是不要覆寫現存的資料來源,因為管理員可能已修改了與測試偵錯環境不同的正式資料庫連接屬性。
  • TargetDataSetFolders : 若專案中包含了共用資料集,此屬性是用來標示在目標伺服器中用來作為共享資料集部署的料夾名稱,像是網站根目錄 /Folder1/Folder2。如果是部署至 SharePoint 整合模式的報表伺服器,則應該標明 SharePoint 文件庫的 URL,如 http:///site>/Documents/MyFolder
  • TargetDataSourceFolders : 若專案中包含了共用資料來源,此屬性是用來標示在目標伺服器中用來作為共享資料來源部署的資料夾名稱。像是:網站根目錄 /Folder1/Folder2。如果是部署至 SharePoint 整合模式的報表伺服器,則應該標明 SharePoint 文件庫的 URL,如 http:///site>/Documents/MyFolder
  • TargetReportFolder : 設定整個專案中報表要發佈的目標資料夾名稱,根據預設會直接帶入專案名稱。如果此資料夾尚未存在於目標伺服器,報表設計師會協助建立新的資料夾。
  • TargetReportPartFolder : 設定整個專案中報表組件要發佈的目標資料夾名稱
  • TargetServerURL : 在部署報表之前,必須先利用 TargetServerURL 屬性指定有效的伺服器 URL。如果是要部署至原生報表伺服器,則需要用報表伺服器虛擬目錄,像是 http://servername/reportserver。若是部署至 SharePoint 整合模式的報表伺服器,則需使用 SharePoint 網站或是子網站的 URL,例如 http://servername/site/subsite。
  • TargetServerVersion : 要部署的報表伺服器版本。


在屬性頁的「組態管理員」可進入組態設定,以及選取「新增」以自訂組態。並提供了「建置」與「部署」組態管理員屬性,決定 BIDS 如何部署此專案。


  • 勾選「建置」:BIDS 建置報表專案以及在工作清單視窗中顯示報表錯誤訊息。
  • 未勾選「建置」 :BIDS 不建置此報表專案,只有在預覽報表或是部署報表後才可以偵錯。
  • 勾選「部署」:如果沒有錯誤,則 BIDS 部署這些報表。
  • 未勾選「部署」:BIDS 在執行報表時,可以在本機預覽視窗中顯示這些報表。


選定部署組態後,可以選擇部署的單一物件 ( 例如某一張報表、共部資料來源檔 ) 或是將專案下的所有物件一起部署到報表伺服器資料庫中。此時,只需要點選方案總管之專案名稱,或是點選任何想要單獨部署的物件按右鍵,選取「部署」即可。



開始部署時,會於「輸出」視窗中列舉部署狀態。部署完成後,進入報表管理員即可檢視已部署的報表物件。


如果重新部署報表時,只會更新存放於報表伺服器資料庫中的報表定義檔,原本儲存於報表伺服器資料庫的報表定義檔會被新部署的報表定義檔所取代。但先前透過報表管理員所設定的報表屬性 ( 如執行方式、參數、歷程記錄、安全性等 ) 並不會異動。

自助式商業智慧
標準的 IT 測試流程可以透過部署組態來區分,而自助式商業智慧的管理若未經規劃,會造成管理上的嚴重問題。報表伺服器上可能會出現一堆名稱不明確、功能不明確及存在價值不明確的報表。在管控上應只允許具有報表產生器的使用者僅能將報表存放在特定位置 ( 通常是
「我的報表」資料夾中 ),而不可以與前述標準流程產製的報表部署路徑重疊


使用報表管理員部署
在正式上線環境中,管理員也有可能會執行部署報表的動作,相較於設計者比較常使用 BIDS,報表系統管理員反而是比較熟悉報表管理員 ( SSMS 從 2008 版以後已不支援上傳報表 )。
報表管理員中提供了「上載檔案」功能,選取本機或分享於網路上的報表定義檔上傳到報表伺服器中。如同使用「報表設計師」的部署功能,報表管理員的「上載檔案」功能也是將報表存入報表伺服器資料庫中,但是「上載檔案」功能一次只能上傳一個檔案。只需點選報表設計師工具列的「上載檔案」,並於接下來的畫面中指定 rdl 檔案路徑以及名稱即可完成上傳。




基本上,報表伺服器沒有限制報表定義檔的大小,但 Microsoft ASP.NET 會限制部署到報表伺服器的檔案大小。預設的限制為 4 MB,如果上傳或部署到報表伺服器的報表定義檔超出此限制,就會收到 HTTP 例外狀況;但可以修改 Machine.config 檔案中 maxrequestLength 參數值即可。



沒有留言: