【问题标题】:Restore SQL Server database in same pc with different name用不同的名称在同一台电脑上恢复 SQL Server 数据库
【发布时间】:2011-03-08 05:10:52
【问题描述】:

我有:

SQL Server 2008

数据库名称:database1

大约一个月前,我从“database1”进行了备份。现在,不知何故,“database1”在某些表中被弄乱了。

所以我只想从上次备份中恢复那些表。

我正在尝试创建另一个名为“database2”的数据库并使用旧备份对其进行恢复。

我害怕从备份文件中恢复,它可能会在“database1”中恢复,我想只在“database2”中重新存储(这是新的)

【问题讨论】:

标签: sql-server


【解决方案1】:

如果您使用的是 SSMS,您可以:

1)右键单击数据库文件夹

2)选择恢复数据库

3)在“To Database”字段中输入您想要的任何名称 - 这将是数据库名称

4)选择“从设备”并找到您的备份文件。

可能需要通过选择“选项”页面指定不同的物理文件名(我不记得 SQL Server 是否会在数据库中自动预填充不同的文件名备份中包含的文件名已经存在。

【讨论】:

  • 我不得不在选项页面中手动设置不同的文件名。
  • 如果我不使用 bak 文件,我可以在源数据库中使用数据库名称............但是我无法看到源数据库中的所有数据库。你能帮帮我吗为什么我做不到
  • 如果已经存在同名数据库或者有同名文件,重命名数据库和文件。是的 - 即使你给它一个新名称和新文件名,它仍然会失败(卡在“正在恢复...”状态)。很烦人。
【解决方案2】:

这里是使用 T-SQL 可以帮助您的地方。

  1. 执行“restore filelistonly from disk = 'your backup file here'”这将为您从备份文件中获取数据库的逻辑文件列表及其物理路径。
  2. 根据上面得到的信息,执行“restore database database2 from disk = 'your backup file here' with move 'logical file 1' to 'physical file name 1', move 'logical file 2' to 'physical file名称 2',..."。确保您在此处提供的物理路径未在使用中。

【讨论】:

  • 如果我不使用 bak 文件,我可以在源数据库中使用数据库名称............但我无法看到源数据库中的所有数据库。你能帮帮我吗为什么我做不到
  • 简单地说,你在其他数据库中没有权限。因此,要么与具有 sysadmin 角色的人交谈以帮助您,自己获得 sysadmin,或者在此线程中练习其他解决方案之一(即重命名当前数据库并恢复为旧名称)。不过,如果您缺乏当前权限会损害后者的努力,我不会感到惊讶。
【解决方案3】:

您可以将现有数据库重命名为 OriginalDB,然后创建一个名为 database1 的空数据库。在里面恢复你的备份。现在您可以将数据从 Database1(从 bkp)复制到 OriginalDB。完成后,删除备份并将原来的重命名回Database1

【讨论】:

    猜你喜欢
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    相关资源
    最近更新 更多