如何使用最新备份更新我的本地SQL Server数据库?

时间:2013-12-18 16:09:15

标签: sql sql-server database sql-server-2012 backup

我在本地环境中使用SQL Server 2012。事实上,它在我的Windows 7机器上运行。我的问题如下:我收到了我的SQL数据库的每日备份。现在,我只是通过删除现有数据库来每天恢复整个数据库。此还原任务需要相当长的时间才能完成。我对恢复过程的理解是它用新备份覆盖了以前的数据库。 有没有办法让SQL Server 2012只使用新备份中发生的任何更改来修改现有数据库?我的意思是,比较先前的数据库和更新的数据库,并在需要时进行必要的更改。

3 个答案:

答案 0 :(得分:1)

是的,您需要差异备份,而不是完整备份。恢复它以移动到原始数据库的“时间点”状态。 对完整/差异和日志备份进行基础研究(简短答案的信息太多)

答案 1 :(得分:0)

我不相信。您可以使用数据库复制执行某些操作,但这可能不合适。

如果您确实有某些东西可以提取更改,那么它可能不会比恢复更快。你是C#还是类似的开发者?如果是这样,我很想写一个监视备份位置的服务,并在它到达时以编程方式开始恢复;可能会节省一些时间。

答案 2 :(得分:0)

如果您的问题是“我可以将更改从外部数据库合并到我当前的数据库而无需还原整个数据库吗?”然后答案是“是的,但不容易。”您可以设置日志传送,但自动执行相当复杂。手动操作也相当复杂,但出于不同的原因:没有“微软”的方法来做到这一点。你必须自己想出手动的日志传送。

您可以考虑通过链接服务器手动复制表。如果你只是更新少量的表,这可能会很好,你可以省去一些麻烦。工作站上的链接服务器,保存到.sql文件的一些MERGE语句,您可以根据需要更新数据库中的重要表。


可以避免使用差异备份在远程服务器上运行完整备份,但这并不是特别令人愉快。

我的假设是,您目前正在使用COPY_ONLY选项创建完整备份。这允许您创建不会干扰现有备份的带外备份副本。

要执行您真正想要的操作,您必须执行此操作:在服务器上设置备份以在第1天执行完整备份,然后在第2-X天执行差异备份。现在,在本地系统上,保留在第1天创建的数据库的完整备份。然后,从第1天开始,您将拥有所有差异备份。恢复第1天完整数据库,然后按正确顺序恢复每个后续差异。

但是,差异备份要求备份链完好无损。您不能将COPY_ONLY与差异备份一起使用。这意味着如果您还使用备份来实际备份数据库,那么您将使用这些相同的备份进行数据备份,或者您需要使用COPY_ONLY进行数据备份,这两者都是似乎在哲学上是错误的。您的开发人员数据库副本不应该驱动您的prod备份程序。

所以,你可以做到,但是:

  1. 您仍需要进行完整的数据库恢复。

  2. 恢复数据库还有很多工作要做。

  3. 您可能会破坏原始数据库的现有备份程序。