在SQL Server 2016中使用一个备份文件进行多次还原

时间:2017-06-16 13:15:43

标签: sql sql-server database sql-server-2016

我们有一个.bak文件,用于在Microsoft Server 2016和SQL Server 2016上进行测试。有时我们想在一台服务器上安装多个安装。我们想要的是几个相同但又分开且名称不同的数据库,它们都来自同一个.bak文件。

我总是可以恢复.bak一次,但第二次(使用不同名称的数据库)我会收到此错误:

Restore of database 'RVT_DB4_2' failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)

System.Data.SqlClient.SqlError: Exclusive access could not be obtained because the database is in use. (Microsoft.SqlServer.SmoExtended)

过去我总是使用SQL 2008,从来没有遇到过这个问题。 .bak文件很可能是使用SQL 2008创建的。我甚至不确定我们是否正在恢复错误,或者我们是否恢复不正确。关于我做错了什么的提示,或者我在这里缺少什么设置?

谢谢!

2 个答案:

答案 0 :(得分:0)

运行sp_who2并终止任何有问题的数据库的路由会话:

EXEC sp_who2

然后,您可以在执行还原之前将数据库设置为单用户模式:

ALTER DATABASE 'DATABASE' SET SINGLE_USER
WITH ROLLBACK IMMEDIATE

运行还原,然后将其更改回多用户

ALTER DATABASE 'DATABASE' SET MULTI_USER;

但是请不要将其设置为单个用户,然后断开连接,或者您可以尝试重新使用它...

答案 1 :(得分:0)

如果使用连接到服务器的多个设备进行备份,则在联机还原期间必须具有相同数量的设备。 (微软书籍)