首页 > 解决方案 > 使用 Management Studio 在 SQL Server 2012 中的同一服务器中以不同名称恢复正在运行的数据库

问题描述

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

它有一个名为 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 中以不同的名称拥有现有和正在运行的数据库的副本,或者换句话说)恢复现有和正在运行的数据库在 SQL Server 2012 中具有不同名称的备份?

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

标签: sql-serverdatabaserestore

解决方案


还原数据库时,需要将数据库重命名为原始名称以外的名称: 在此处输入图像描述

然后单击“文件”部分并确保文件名与原始数据库不同: 在此处输入图像描述


推荐阅读