正如我在前面的技巧“您的數據庫上次恢復是什么時候呢?”中提到的,SQL Server使msdb數據庫內系統表中的備份和恢復記錄保持激活狀態。沒有正常的維護,這些系統表將變得很大,從而導致對于msdb數據庫整體超大。
這些msdb表包括:
?
????? backupfile?
backupfilegroup backupmediafamily backupmediaset backupset restorefile restorefilegroup restorehistory |
幸運的是,微軟提供了兩個系統存儲過程,你可以用它們來限制保存出具的msdb數據庫表的大小。第一個程序刪除日期晚于某個給定時間的所有備份和恢復。第二個程序允許你刪除某個特定數據庫的所有備份和恢復記錄。讓我們具體看看這兩個程序。
?
通過觀察我系統上的msdb表backupset和restorehistory,我發現下面的已經執行的數據庫備份和恢復:
圖一
可能使用的第一個程序是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 |
正如你看到的,只有這個給定數據庫的記錄被刪除了:
?
圖三
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
