[SSIS]如何縮減 SSISDB 的資料庫大小 ?

從 SQL Server 2012 開始可以使用專案佈署模式後,相關資訊都存放在 SSISDB,那如何刪除歷史資訊呢 ?

SQL Server 自從 2012 開始,讓 SSIS 可以從原本的封裝佈署模式,進階到專案佈署模式 ( 可參考 小試專案部署模式( Project Deployment Model ) 和參數 ( Parameter )使用 ),而當這樣使用之後,相關的執行資訊都會自動存放在 Integration Services Catalog 內,也就是一般我們稱之為 SSISDB 的資料庫內,也因為這樣,我們就可以搭配相關的 SSIS 的執行報表來查看相關的執行資訊,再管理上來說算是非常的方便。

而這樣的好處,也會伴隨而來的會有一些缺點,就是當您每天有非常多的 SSIS 的封裝要執行,而每個封裝內又有非常多的 Task 的時候,那麼在 SSISDB 內則勢必會有非常多的資料,那這樣會不會造成 SSISDB 過大的困擾呢 ? 一開始我也沒有特別注意到這件事情,剛好是最近有個學生,傳來一篇國外的部落客文章,介紹如何來刪除 SSISDB 裡面的資料,因此看了一下文章中所介紹的,如何自己下指令去刪除資料,感覺實在有點麻煩.....

而對我來說,資料庫自己會做的事情,我就很懶得去弄了,因此稍微說明一下我是如何去處理這個問題的。

1. 調整資料庫復原模式:SSISDB 其實它本質就是一個存放 SSIS 執行時候相關數據的資料庫,因此跟其他資料庫一樣,如果沒有特別去設定,則預設的復原模式就是「完整」,而如果您平常又沒有針對 SSISDB 去做交易紀錄備份,那可想而知,用了一陣子之後,您的 SSISDB 資料庫的交易紀錄檔案,一定會長大非常多。因此如果您沒有特別要去對 SSISDB 去做備份管理的話,那麼就簡單一點,直接把復原模式調整為「簡單」,並且去縮小已經過大的交易記錄檔,那麼只要做一次,就不用擔心 SSISDB 的交易紀錄檔一值持續長大了。

2. 設定 SSISDB 屬性:這一塊也是大家常忽綠的,因為前面一項是縮減交易紀錄檔的大小,而透過屬性的設定,主要是現在我們在 SSISDB 內存放資料的多寡。在 SSISDB 內,預設是保留 365 天的執行紀錄,因此如果您沒有需要看那麼長期的資料,或許您可以跟我一樣,把參數調整為 31 天,最多看一個月份的資料,這樣過期的資料也就會自動被清除了。


當然上述是我自己比較偷懶的做法啦,設定好之後就不用去管他了,當然您也可以找到一些文章,自己去刪除資料表,只是因為在 SSISDB 內有些資料表都有設定 FK,因此在刪除資料前就要注意相關資料表的關聯,否則可能會浪費不少時間在處理這些。