【发布时间】: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