首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >还原数据库时的单用户模式

还原数据库时的单用户模式
EN

Database Administration用户
提问于 2017-11-21 14:12:54
回答 1查看 21.2K关注 0票数 4

在还原数据库之前,是否有必要将数据库放入单用户模式?如果是这样的话,那么在恢复之前将sql服务器放到单用户模式还是只将数据库放置到单用户模式更好!谢谢。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-11-21 14:27:14

只有在还原master数据库时,才需要将Server实例置于单用户模式下。对于user数据库,您必须确保没有与要还原的数据库的活动连接。您必须确定并终止任何活动的SPID(这将不要求数据库处于单用户模式),或者使用以下方法之一将数据库置于单用户模式(由Greg Robidoux 获取独占访问以还原服务器数据库引用一篇文章:

代码语言:javascript
复制
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 
  • 使用回滚立即-此选项不等待事务完成,它只是开始回滚所有打开的事务
  • 在nnn之后使用ROLLBACK -此选项将在等待nnn秒后回滚所有打开的事务以使打开的事务完成。在我们的示例中,我们指定流程应该等待30秒才能回滚任何打开的事务。
  • 使用NO_WAIT -只有当所有事务已经完成时,此选项才会将数据库设置为单用户模式。它等待一段指定的时间,如果事务未完成,则处理将失败。这是最干净的方法,因为它不会回滚任何事务,但是如果有打开的事务,它并不总是有效的。

一旦数据库进入单用户模式,您就可以独占访问数据库,然后可以在没有问题的情况下进行还原。注意:当使用ROLLBACK选项时,您正在回滚数据库中仍然存在的任何打开的事务。回滚过程应该可以正常工作,但是如果您有很长时间运行事务,回滚过程可能需要很长时间,所以请注意您的系统上正在运行的是什么。对于测试和开发系统,由于您正在进行恢复,所以无论如何您并不关心事务,因此回滚事务不应该是一个问题,但您仍然需要注意,长期运行的事务可能需要一些时间才能回滚。

票数 8
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/191404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档