Maintenance Cleanup Task – 維護清除工作

Maintenance Cleanup Task – 維護清除工作

在「維護計畫(Maintenace Plan)」裡的「維護清除工作(Maintenance Cleanup Task)」 ,其實使用的是master.dbo.xp_delete_file這支undocumented的stored procedure:

clip_image002

clip_image004

 

xp_delete_file在清除備份檔案前會先執行RESTORE LABELONLY檢查檔頭資訊,確定為database 備份或log備份檔後才會真的將該檔案刪除。似乎由SQL backup出來的任何附檔名皆可透過xp_delete_file來刪除,反之若不是SQL backup出來的檔案,即使自行將副檔名改為.bak檔仍不會被刪除。

 

(1) 刪除SQL備份檔 –副檔名為.abc

 

-- 建立測試DB並備份,副檔名為.abc

 

image

 

clip_image006

 

 

--檢查檔頭

image

 

 

--刪除備份檔

image

 

確定檔案已刪除:

clip_image010

 

--刪除測試DB

image

 

 

(2)測試非由SQL備份出來的檔案

 

--手動新增副檔名.bak之檔案

clip_image012

 

--檢查檔頭時檔出現錯訊息

clip_image014

 

--執行xp_delete_file

clip_image016

 

--手動新增的bak檔並沒有被刪除

clip_image018