Sql-Server

如何從昨晚的完整備份和活動事務日誌文件中恢復 SQL Server 數據庫?

  • March 8, 2016

有人告訴我,將 SQL Server 數據文件和日誌文件保存在物理上單獨的磁碟上是一種很好的做法,因為如果數據驅動器發生故障,它可以讓您將數據恢復到故障點。

所以…假設 mydata.mdf 在驅動器 D: 上,而我的 mydata_log.ldf 在驅動器 E: 上,現在是 16:45,驅動器 D: 剛剛死去。

所以 - 我有昨晚的完整備份(mydata.bak)。我有每小時的事務日誌備份,可以將數據恢復到 16:00……但這意味著我將失去 45 分鐘的更新時間。

我仍然在 E: 驅動器上有 mydata_log.ldf,它應該包含直到驅動器發生故障時送出的每個事務。

如何重新創建數據庫並從備份文件和實時事務日誌中恢復數據,這樣我就不會失去任何更新?這可能嗎?

要完成 imtiaz 的回答:

首先要做的是立即嘗試備份日誌尾部。即使使用損壞的(可疑狀態)數據庫,您也可以備份日誌的尾部。

例子:

備份日誌 db_name 到磁碟 = ‘C:\TESTS\db_name_log.trn’ WITH INIT, NO_TRUNCATE;

還原完整備份(NO RECOVERY 選項)+ 還原 16:00 日誌備份(NO RECOVERY 選項)+ 還原尾部備份(RECOVERY 選項)-> 您能夠將數據庫還原到最後一個故障點。

您需要對日誌文件進行尾部備份(取決於您的 sql 版本)。如果你可以備份尾巴,那麼你就準備好了!如果你不能,那麼你將不得不處理數據失去並增加日誌備份的頻率。由於業務需要,我每 5 分鐘備份一次。

來自 BooksOnline:BACKUP LOG database_name TO WITH CONTINUE_AFTER_ERROR

如果數據庫損壞,例如數據庫沒有啟動,只有日誌文件未損壞,數據庫處於支持tail-log備份的狀態,數據庫不包含任何批量記錄的更改。

引用自:https://serverfault.com/questions/218616