正如我在前面的技巧“您的數(shù)據(jù)庫(kù)上次恢復(fù)是什么時(shí)候呢?”中提到的,SQL Server使msdb數(shù)據(jù)庫(kù)內(nèi)系統(tǒng)表中的備份和恢復(fù)記錄保持激活狀態(tài)。沒(méi)有正常的維護(hù),這些系統(tǒng)表將變得很大,從而導(dǎo)致對(duì)于msdb數(shù)據(jù)庫(kù)整體超大。
這些msdb表包括:
?
????? backupfile?
backupfilegroup backupmediafamily backupmediaset backupset restorefile restorefilegroup restorehistory |
幸運(yùn)的是,微軟提供了兩個(gè)系統(tǒng)存儲(chǔ)過(guò)程,你可以用它們來(lái)限制保存出具的msdb數(shù)據(jù)庫(kù)表的大小。第一個(gè)程序刪除日期晚于某個(gè)給定時(shí)間的所有備份和恢復(fù)。第二個(gè)程序允許你刪除某個(gè)特定數(shù)據(jù)庫(kù)的所有備份和恢復(fù)記錄。讓我們具體看看這兩個(gè)程序。
?
通過(guò)觀察我系統(tǒng)上的msdb表backupset和restorehistory,我發(fā)現(xiàn)下面的已經(jīng)執(zhí)行的數(shù)據(jù)庫(kù)備份和恢復(fù):
圖一
可能使用的第一個(gè)程序是sp_delete_backuphistory。這個(gè)系統(tǒng)存儲(chǔ)過(guò)程帶有一個(gè)參數(shù) – 一個(gè)截止時(shí)間。任何早于給定時(shí)間的日期都會(huì)從這個(gè)技巧前面提到的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 |
再次查看這些表。我發(fā)現(xiàn)所有早于4/2/2009并且與這些已經(jīng)刪除的條目有關(guān)的備份記錄都已經(jīng)清除。
?
圖二
第二個(gè)系統(tǒng)存儲(chǔ)過(guò)程允許你刪除某個(gè)特定數(shù)據(jù)庫(kù)的歷史備份數(shù)據(jù),這個(gè)程序被稱作sp_delete_database_backuphistory。不幸的是,這個(gè)程序沒(méi)有提供一個(gè)選擇截止日期的更好的選項(xiàng);它全有或全無(wú)。在下一個(gè)例子中,我將刪除一個(gè)給定數(shù)據(jù)庫(kù)的所有備份記錄。
?
????? -- delete all backup history for a specific database?
use msdb go exec sp_delete_database_backuphistory 'test1' go |
正如你看到的,只有這個(gè)給定數(shù)據(jù)庫(kù)的記錄被刪除了:
?
圖三
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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