##高分求教:在SqlServer中如何进入对某个数据库的独占模式,进入独占模式时,对已连接的用户怎么处理

liuyan4794 2006-04-02 09:56:24
在SqlServer中如何进入对某个数据库的独占模式,进入独占模式时,对已连接的用户怎么处理?进入独占模式之后,对尝试连接的用户有怎么处理?
...全文
289 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2006-04-03
  • 打赏
  • 举报
回复
xp_cmdshell 'net send 计算机名 数据库断开通告信息"
aniude 2006-04-03
  • 打赏
  • 举报
回复
学习
liuyan4794 2006-04-03
  • 打赏
  • 举报
回复
谢谢

不过要通知已连接的用户,能直接通过SQLServer通知吗?有没有一种办法,可以让这些正在访问的数据库返回一个自定义的错误号
zjcxc 元老 2006-04-02
  • 打赏
  • 举报
回复
为避免数据丢失, 在你修改数据库进入单用户模式之前, 应该通知用户提交或者回滚当前正大运行的事务. 再配合前面提交的处理语句进行处理就可以了.
zjcxc 元老 2006-04-02
  • 打赏
  • 举报
回复
对于当前已经连接的用户, 可以通过 KILL 强制断开连接.

如果已经连接的用户开启了事务, 则 KILL 会导致事务回滚.

为了保证已经连接的用户的事务得以顺利处理, 可以通过指定 WITH 选项指定处理模式:
ALTER DATABASE <DatabaseName>
SET single_user
WITH
{
ROLLBACK AFTER integer [ SECONDS ] -- 等待多少秒之后回滚事务
| ROLLBACK IMMEDIATE -- 立即回滚事务
| NO_WAIT -- 没有用户开启事务的情况下才进行单用户模式
}
zjcxc 元老 2006-04-02
  • 打赏
  • 举报
回复
独占模式其实就是单用户模式. 执行下面的语句把数据库改为单用户模式即可:

ALTER DATABASE <DatabaseName>
SET single_user

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧