2014年3月13日 星期四

[SQL Server 2008R2][SSRS] 報表伺服器資料庫使用狀況

ReportServer 和 ReportServerTempDB 資料庫是報表伺服器運作時不可或缺的部分,但也要適當管理磁碟空間資源。
ReportServer 資料庫不只是報表服務用來儲存報表的定義檔,其中還包含組態資料、安全設定及排程工作,而 ReportServerTempDB 資料庫只儲存暫時性的資料,像是 Session 及快取的資訊。在 ReportServer 資料庫中,除了 ChunkData 這個資料表外,多數的資料表並不會佔用太大的空間,ChunkData 資料表包含了快照集及歷程記錄,而這兩種報表都是以中繼資料表的方式儲存於資料庫中,因此比其他資料表耗用了更多的磁碟空間;而在 ReportServerTempDB 資料庫中的 ChunkData 資料表則是存放 Session 快取及快取報表,其中快取報表是以中繼報表格式儲存,因此也是非常佔用磁碟空間。

使用 SQL Server 所提供的工具,來檢視 ReportServer 及 ReportServerTempDB 資料庫的資料表空間使用狀況。

在 SSMS 連線資料庫後,點選 ReportServer 資料庫,點選資料庫圖示按右鍵,在「報表」->「標準報表」下拉選單中,選擇「依資料表使用的磁碟空間」。


即可看到以下的畫面。

ChunkData 資料表會因持續增加快照集或歷程記錄,這資料表的空間成長速度會比其他資料表快上好幾倍。可以藉由 SQL Server 提供的報表來監視 ChunkData 的大小。

以下項目會增加磁碟空間的耗用

  • 報表數量
  • 快照集的數量
  • 將快照集轉存為歷程記錄的數量
  • 快照集與歷程記錄的中繼報表大小 ( 含報表資料 )
  • 由不同報表參數組合會產生的快取數量
  • 會使用 Sssion 快取的使用者總數
  • Session 快取逾時設定長度
利用 SQL Server 2008 R2 的資料壓縮功能來最佳化資料庫磁碟儲存空間。除了可以有效的節省磁碟空間外,因資料磁碟空間變小,系統的 I/O 存取的效率也變得更好,存取查詢速度反而變更好。

先由「依資料表使用的磁碟空間」報表中找出較佔空間的資料表,在 SSMS 中點選此資料表按右鍵,選取「儲存體」->「管理壓縮」。



也可以指定產生指令碼,產生的指令碼可以利用 SQL Server Agent 排程,以進行定期壓縮管理。




沒有留言: