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
WITH ROLLBACK IMMEDIATE - 此选项不等待事务完成它只是开始回滚所有打开的事务
WITH ROLLBACK AFTER nnn - 此选项将在等待 nnn 秒以完成打开的事务后回滚所有打开的事务。在我们的示例中,我们指定进程应在回滚任何打开的事务之前等待 30 秒。
WITH NO_WAIT - 如果所有事务都已完成,此选项只会将数据库设置为单用户模式。它等待指定的时间段,如果事务未完成,则该过程将失败。这是最干净的方法,因为它不会回滚任何事务,但如果有打开的事务,它并不总是有效。
master
如果要还原数据库,则只需将 SQL Server 实例置于单用户模式。对于user
数据库,您必须确保没有与您正在恢复的数据库的活动连接。您要么必须确定并终止任何活动的 SPID(这不需要数据库处于单用户模式),要么使用以下方法之一实际将数据库置于单用户模式(参考 Greg Robidoux 的帖子获取独占访问权限恢复 SQL Server 数据库:如果您连接到此数据库,则无法恢复数据库,您将收到错误消息:
这意味着您应该恢复连接到另一个数据库的数据库,(推荐)
master
。但是,如果您将数据库放入
single_user
(在恢复之前) frommaster
,则在您放入single_user
和恢复之间可能有人连接到该数据库。为了避免这种情况,只需将您的数据库
offline
而不是single_user
: