【问题标题】:Restoring a running database in a different name in same server in SQL Server 2012 using Management Studio使用 Management Studio 在 SQL Server 2012 中的同一服务器中以不同名称恢复正在运行的数据库
【发布时间】:2020-10-05 23:07:10
【问题描述】:

我有 SQL Server 2012(64 位)(MSSQL11) 在 Windows 2012 R2(64 位)(NT 6.3)上运行 使用 .NET 框架 4.0。

它有一个名为 db_X 的数据库,由于这是一个实时生产数据库,它始终在运行和停止它不是一个选项。

这是我实际拥有的唯一 SQL Server 数据库服务器。

我想对 db_X(我知道该怎么做)进行备份(即完整备份)并在同一 SQL Server 数据库服务器中以不同的名称(例如 db_Y)恢复该备份(即 .bak 文件) .

我创建了一个名为 db_Y 的新数据库,然后右键单击 db_Y,然后转到 Tasks --> Restore --> Database...

然后我给出了该 .bak 文件的路径(作为源)并尝试通过将 db_Y 作为目标来恢复它(使用选项 - 覆盖现有数据库,即 WITH REPLACE)

但这不起作用。它给出了一个错误。

它说恢复数据库 db_Y 失败。 System.Data.SqlClient.SqlError:无法覆盖文件 C:...\db_X1.mdf。数据库 db_X 正在使用它。 Microsoft.SqlServer.SmoExtended。

但我仍然相信这可以使用 Management Studio 来完成。或者至少使用脚本。 (因为这是一个常见的要求。)

当我明确将 db_Y 作为我的目的地时,为什么它试图在 db_X 上恢复?这不是有点吓人,因为 db_X 是我的实时数据库(因为我可能会丢失一些数据)?

如何在 SQL Server 2012 中恢复现有和正在运行的数据库的备份(在 SQL Server 中以不同的名称或换句话说)恢复现有和正在运行的数据库的备份?

p>

如果有人可以解释如何使用 Management Studio 或至少使用脚本来完成此操作,我将不胜感激。

【问题讨论】:

    标签: sql-server database restore


    【解决方案1】:

    当您恢复数据库时,您需要将数据库重命名为原始名称以外的名称:

    然后单击“文件”部分并确保文件名与原始数据库不同:

    【讨论】:

    • 非常感谢您的努力和回答。您说“当您恢复数据库时,您需要将数据库重命名为原始名称以外的名称”我该怎么做?我将备份文件重命名为 db_Y.bak,但是当我将 db_Y.bak 作为我的源时,它显示 db_X(而不是 db_Y)作为数据库的名称(可能是因为在文件 db_Y.bak 中,它很可能有提到这个文件包含一个名为db_X的数据库的备份)数据库的名称(在源下)不是SSMS自动选择的,我不能改变它吗?
    • 在第一个屏幕截图中,突出显示的字段是恢复的数据库将被调用的内容。你想要的东西与原来的数据库不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多