Sql-Server
checkdb前後的完整備份
最近有人告訴我,我應該在 dbcc checkdb 之前和 checkdb 之後進行一次完整備份,即使在完全恢復時也是如此。有人可以解釋我為什麼要這樣做嗎?
我認為 checkdb 之前的完整備份是不必要的(在完整恢復中),因為我總是可以恢復上次完整備份 + 差異備份 + t-log 備份。這是一個錯誤的假設嗎?
執行前後無需進行完整備份
DBCC CHECKDB
。建議您在 FULL 備份之前進行,DBCC CHECKDB
以便您確切知道哪些 FULL 備份在DBCC CHECKDB
因損壞而失敗時不包含數據庫損壞。最後一次成功之前的完整備份DBCC CHECKDB
是沒有損壞的。要從損壞中恢復,您可以使用 FULL+DIFF+LOG 鍊或 FULL+LOG 鏈。選擇上次成功之前的 FULL 備份
DBCC CHECKDB
。如果在上次成功之前有 DIFFDBCC CHECKDB
,那麼您也可以使用它。但是最後一次成功後的 DIFFDBCC CHECKDB
可能會導致數據庫損壞,這取決於 DIFF 發生的時間和損壞的發生時間。LOG 備份不包含數據頁,因此它們中沒有損壞的數據頁。因此,如果在未損壞的 FULL 或未損壞的 FULL+未損壞的 DIFF 之後擁有整個 LOG 鍊和日誌尾部,則可以在不失去數據的情況下進行恢復。