Sql-Server

遷移差異備份還原

  • May 28, 2016

下午好,

關於我正在嘗試做的事情的一個小背景故事:我正在將數據庫環境從一個 SQL 伺服器遷移到另一個。一個簡單的完整備份/恢復工作正常,但是當我將數據移動到新環境時,舊環境可能仍然必須處於活動狀態。鏡像和日誌傳送不是選項,但數據庫本身不需要更新任何內容以使其工作,所以我想我會在其中執行差異並將其恢復到遷移的數據庫位置。

我已經嘗試過這樣做,並發現在我第一次完整數據庫還原後我已經退出了恢復階段。我想我真正的問題是我可以對我目前的位置數據庫進行完整備份,並在我以前的位置數據庫上進行差異備份,並讓它像我從同一個位置數據庫恢復完整和差異備份一樣工作嗎?

另外,如果在我對原始數據庫進行差異備份的時間之間有日誌備份,我是否也需要包括它們?

如果您需要澄清,請告訴我。

歡迎來到論壇。您不需要SQL Server 中的 FULL 備份和 DIFF 備份之間進行日誌還原。如果這樣做,您將破壞用於在還原之間標記增量的 LSN(日誌序列號)。差異備份是上次完整備份的所有事務。SQL Server 在備份時會記錄數據頁中的最後一次完整備份,以便知道哪些數據頁已更改。此時,上一次完整備份的任何 DIFF 備份都將起作用。

請注意,較新版本的 SQL Server 有一個“僅複製”選項,它不會影響您的 LSN 或自上次完整備份以來修改的頁面。所以基本上不要使用 COPY ONLY。

最後,您需要使用 NORECOVERY 進行恢復。我知道這聽起來很不直覺,但基本上你是在告訴引擎不要播放日誌文件。

--This restores the full DB but does not replay the open transactions at the time, leaving it consistent for a DIFF or transaction log restore
RESTORE DATABASE DATABASE FROM '<pathofDBBackup>' WITH NORECOVERY;

--This is your DIFF restore and at the end you can recover.
RESTORE DATABASE DATABASE FROM '<pathofDIFFDBBackup>' WITH RECOVERY;

如果您需要更多資訊:

了解備份的還原和恢復如何在 SQL Server 中工作

Paul Randall 的優秀備份內部影片。

備份內部展示

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