很多時候,在我們規劃SQL Server資料庫的空間,或向存儲方面要空間時,都需要估算所需申請資料庫空間的大小,估計未來最簡單的辦法就是看過去的趨勢,這通常也是最合理的方式。
通常來講,一個運維良好的資料庫都需要做定期基線(baseline),有了基線才會知道什麼是正常。一個簡單的例子例如,一些人的血壓平常偏低,那麼80的低壓對他來說就是不正常了。但現實情況是大多數系統并沒有采集基線的習慣,是以在需要規劃空間想要看曆史增長時,就沒有過去精确的資料了。
一個解決辦法就是通過檢視曆史備份的大小來看過去的資料增長趨勢,資料庫備份的時候不會備份整個檔案,而隻備份在FPS頁中标記已經配置設定的頁,可以出現資料庫是20G,但備份隻有3G的情況,是以資料庫備份可以作為檢視資料增長的依據。
資料庫在每次備份時都會在msdb.dbo.backupset表中記錄備份的相關資訊,是以可以通過下述檢視來聚合曆史備份資訊,進而對比資料庫的增長:
代碼清單1.按月檢視曆史資料的增長
結果如圖1所示。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuczYwMGOjdTM3kTN4UWY2QGZxY2MkV2MjZ2YwE2NiZGOfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
圖1.曆史資料的增長
其中,代碼清單1中database_name換成你需要檢視的資料庫名稱即可。
注:SQL Server 2008之後引入了基于政策的管理,該政策會預設建立一個作業,如圖2所示,該作業每天2點運作,會按照政策(曆史記錄保留天數,如圖3所示)清理過期的曆史記錄。
圖2.檢視政策管理
圖3.曆史記錄保留天數,預設為0,既永不清理
該政策會對應建立一個作業(如圖4所示)。
圖4.清理曆史記錄的作業
如果該作業或人為建立的作業清除了msdb.dbo.backupset表中的資料,則代碼清單1中的結果可能會受到一定影響。