Sql-Server
遷移差異備份還原
下午好,
關於我正在嘗試做的事情的一個小背景故事:我正在將數據庫環境從一個 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;
如果您需要更多資訊: