恢复数据库时的单用户模式

Sql*_*ice 3 sql-server backup database-recommendation restore sql-server-2012

在恢复数据库之前是否需要将数据库置于单用户模式?如果是这样,在还原之前将 sql server 置于单用户模式还是仅将数据库置于单用户模式更可取!谢谢你。

Sco*_*red 7

如果要还原master数据库,则只需将 SQL Server 实例置于单用户模式。对于user数据库,您必须确保没有与要恢复的数据库的活动连接。您要么必须确定并终止任何活动的 SPID(这不需要数据库处于单用户模式),要么使用以下方法之一实际将数据库置于单用户模式(参考 Greg Robidoux 的帖子获取独占访问权限)恢复 SQL Server 数据库

ALTER DATABASE [Test4] SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
OR 
ALTER DATABASE [Test4] SET SINGLE_USER WITH ROLLBACK AFTER 30 
OR 
ALTER DATABASE [Test4] SET SINGLE_USER WITH NO_WAIT 
Run Code Online (Sandbox Code Playgroud)
  • WITH ROLLBACK IMMEDIATE - 此选项不等待事务完成它只是开始回滚所有打开的事务
  • WITH ROLLBACK AFTER nnn - 此选项将在等待 nnn 秒以完成打开的事务后回滚所有打开的事务。在我们的示例中,我们指定进程在回滚任何打开的事务之前应等待 30 秒。
  • WITH NO_WAIT - 如果所有事务都已完成,此选项只会将数据库设置为单用户模式。它等待指定的时间段,如果事务未完成,则该过程将失败。这是最干净的方法,因为它不会回滚任何事务,但如果有打开的事务,它并不总是有效。

一旦将数据库置于单用户模式,您就可以独占访问数据库,然后可以毫无问题地进行恢复。

注意:当使用 ROLLBACK 选项时,您将回滚数据库中仍然存在的任何打开的事务。回滚过程应该可以正常工作,但如果您有很长时间运行的事务,回滚过程可能需要很长时间,因此请注意系统上正在运行的内容。对于测试和开发系统,因为您正在进行恢复,所以您无论如何都不关心事务,因此回滚应该不是问题,但您仍然需要注意长时间运行的事务可能需要一些时间来回滚。