下午好,
关于我想做什么的一个小故事:我正在将数据库环境从一个SQL服务器迁移到另一个SQL服务器。简单的完全备份/还原可以正常工作,但当我将数据移动到新环境时,旧环境可能仍然必须是活动的。镜像和日志传送不是选项,但是数据库本身没有任何需要更新才能工作的选项,所以我想我应该在其中运行一个差异,并将其还原到迁移的数据库位置。
我已经尝试过这样做了,并发现在我的第一次完整数据库恢复之后,我已经退出了恢复阶段。我想我真正的问题是,我能不能对我当前的位置数据库做一个完整的备份,对我以前的位置数据库做一个差别化的备份,让它像从同一个位置数据库中恢复完整和dif备份一样工作吗?
另外,如果在对原始数据库进行不同备份之间存在日志备份,那么是否也需要将它们包括在内?
如果你需要澄清,请告诉我。
发布于 2016-05-27 22:33:33
欢迎来到论坛。您不需要在Server中的完整备份和差异备份之间进行日志还原。如果这样做,您将破坏用于标记恢复之间的增量的LSN (日志序列号)。差异备份是上一次完全备份的所有事务。Server注意到备份时数据页中的最后一个完整备份,以便它知道哪些数据页已更改。此时,上一次完全备份中的任何不同备份都可以工作。
注较新版本的Server具有“只复制”选项,自上次完全备份以来,该选项不会影响LSN或修改过的页面。所以基本上不要只使用拷贝。
最后,您需要使用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;如果您需要更多的信息:
https://dba.stackexchange.com/questions/139797
复制相似问题