標籤:
正如我在前面的技巧“您的資料庫上次恢複是什麼時候呢?”中提到的,SQL Server使msdb資料庫內系統資料表中的備份和恢複記錄保持啟用狀態。沒有正常的維護,這些系統資料表將變得很大,從而導致對於msdb資料庫整體超大。
這些msdb表包括:
| backupfile backupfilegroup backupmediafamily backupmediaset backupset restorefile restorefilegroup restorehistory |
幸運的是,微軟提供了兩個系統預存程序,你可以用它們來限制儲存出具的msdb資料庫表的大小。第一個程式刪除日期晚於某個給定時間的所有備份和恢複。第二個程式允許你刪除某個特定資料庫的所有備份和恢複記錄。讓我們具體看看這兩個程式。
通過觀察我系統上的msdb表backupset和restorehistory,我發現下面的已經執行的Database Backup和恢複:
圖一
可能使用的第一個程式是sp_delete_backuphistory。這個系統預存程序帶有一個參數 – 一個截止時間。任何早於給定時間的日期都會從這個技巧前面提到的msdb表中刪除。在下面的例子中,我將刪除所有4/2/2009的所有日期。
| -- delete all backup/restore history prior to a specified date use msdb go exec sp_delete_backuphistory ‘2009-04-02‘ go |
再次查看這些表。我發現所有早於4/2/2009並且與這些已經刪除的條目有關的備份記錄都已經清除。
圖二
第二個系統預存程序允許你刪除某個特定資料庫的曆史備份資料,這個程式被稱作sp_delete_database_backuphistory。不幸的是,這個程式沒有提供一個選擇到期日的更好的選項;它全有或全無。在下一個例子中,我將刪除一個給定資料庫的所有備份記錄。
| -- delete all backup history for a specific database use msdb go exec sp_delete_database_backuphistory ‘test1‘ go |
正如你看到的,只有這個給定資料庫的記錄被刪除了:
圖三
從SQL Server中清除msdb備份和恢複記錄