【问题标题】:How to restore and existing backup from an existing database to a new one without affecting the original?如何在不影响原始数据库的情况下从现有数据库恢复和现有备份到新数据库?
【发布时间】:2015-01-07 16:28:14
【问题描述】:

我已广泛搜索此问题的答案,但找不到好的答案。我查看了几篇恢复数据库文章和一些回滚,但仍然没有成功。

我的情况是:我有一个非常大的数据库,在其中我确实对单个表的单个列执行了错误的更新查询,并且直到昨天我都对该数据库进行了完整备份(这足以纠正问题)。但是同一数据库的其他表同时更新了,我要求它们保持当前值。

所以在阅读完所有内容后,我的计划是:将完整备份恢复到新位置,然后获取我需要的列的值并将其输入当前数据库中。

我的问题是:我无法在不影响生产数据库的情况下恢复此完整备份。当我尝试恢复它时,sql studio 说 mdf 文件不能被覆盖(这很好,因为我将进一步使用该表),然后我看到一些文章告诉我使用 MOVE 查询。但是,如果我确实使用它,原始/生产表中的 mdf 文件将被重新定位,从而影响表对吗? 我还看到一些文章告诉我如果我有事务日志备份就回滚它。我实际上无法判断我是否有这些,也不知道那些是什么。即使在谷歌搜索之后

关于我应该如何进行的任何想法?

对不起,如果这是一个新手问题,但我最初不是程序员,但我一直在做这个工作,我真的需要快速完成!因此,我们将不胜感激任何帮助

我正在使用 SQL Server Standard 2005 和 SQL Server Mangmt Studio 2008。

【问题讨论】:

  • “sql studio 说 mdf 文件不能被覆盖”那是关闭的。您即将覆盖生产数据库。
  • Alex 非常感谢您指出的文章,但这些答案包括我想知道的 MOVE TO 查询。那确实会移动原始文件并重命名吗?或者它只是创造新的?谢谢
  • 如何将数据库恢复到不同的位置和不同的名称? technet.microsoft.com/en-us/library/…
  • 如果您从备份移动到新的数据库名称/新文件名,它不会影响原始数据库或其文件

标签: sql sql-server database sql-server-2008


【解决方案1】:
  1. 在任意位置恢复具有不同名称的备份,例如 DB_Temp
  2. 使用 Select INTO.......从正在运行的 DB 复制表。
  3. 将新恢复的 DB (DB_Temp) 表中的记录导入到正在运行的 DB
  4. 删除数据库 DB_Temp
  5. 检查最近复制的表和原始表之间的更改
  6. 相应地更新记录 谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-10
    • 2018-05-21
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    相关资源
    最近更新 更多