Sql-Server

checkdb前後的完整備份

  • February 7, 2017

最近有人告訴我,我應該在 dbcc checkdb 之前和 checkdb 之後進行一次完整備份,即使在完全恢復時也是如此。有人可以解釋我為什麼要這樣做嗎?

我認為 checkdb 之前的完整備份是不必要的(在完整恢復中),因為我總是可以恢復上次完整備份 + 差異備份 + t-log 備份。這是一個錯誤的假設嗎?

執行前後無需進行完整備份DBCC CHECKDB。建議您在 FULL 備份之前進行,DBCC CHECKDB以便您確切知道哪些 FULL 備份在DBCC CHECKDB因損壞而失敗時不包含數據庫損壞。最後一次成功之前的完整備份DBCC CHECKDB是沒有損壞的。

要從損壞中恢復,您可以使用 FULL+DIFF+LOG 鍊或 FULL+LOG 鏈。選擇上次成功之前的 FULL 備份DBCC CHECKDB。如果在上次成功之前有 DIFF DBCC CHECKDB,那麼您也可以使用它。但是最後一次成功後的 DIFFDBCC CHECKDB可能會導致數據庫損壞,這取決於 DIFF 發生的時間和損壞的發生時間。

LOG 備份不包含數據頁,因此它們中沒有損壞的數據頁。因此,如果在未損壞的 FULL 或未損壞的 FULL+未損壞的 DIFF 之後擁有整個 LOG 鍊和日誌尾部,則可以在不失去數據的情況下進行恢復。

引用自:https://dba.stackexchange.com/questions/163509