Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL server 2016中使用一个备份文件进行多次恢复_Sql_Sql Server_Database_Sql Server 2016 - Fatal编程技术网

在SQL server 2016中使用一个备份文件进行多次恢复

在SQL server 2016中使用一个备份文件进行多次恢复,sql,sql-server,database,sql-server-2016,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.RelationalEngin

我们有一个.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创建的。我甚至不确定我们是否恢复得不正确,或者恢复得不正确。有没有关于我做得不正确的提示,或者我在这里缺少什么设置


谢谢

运行sp_who2并终止任何有关数据库的胭脂会话:

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

ALTER DATABASE 'DATABASE' SET SINGLE_USER
WITH ROLLBACK IMMEDIATE
运行恢复,然后将其更改回多用户

ALTER DATABASE 'DATABASE' SET MULTI_USER;

但是,不要将其设置为单用户,然后断开连接,否则您可能会从尝试恢复中获得乐趣…

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

我认为在使用相同的.bak文件还原数据库时,您必须更改.mdf、.ldf等物理文件的名称,尽管您更改了数据库的名称