加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SqlServer: 单用户模式下查杀相关进程实现单/多用户转换 .

发布时间:2020-12-12 14:29:36 所属栏目:MsSql教程 来源:网络整理
导读:SQLServer下,单/多用户模式转换的三种方法: ? 1.直接在Management Studio中设置相关数据库的Properties:Options--Restrict Access下设置MULTI/SINGLE_USER。 ?? 2.若是其他人设置Server为单用户模式,或者其他未知进程占用操作DB,再使用第一种方法发现该
-----------------------Conversion Between Single Modle and? Multiple Modle,the first method:EXEC??? sp_dboption?? @dbname?? =?? 'DB Name',?? @optname?? =?? 'single?? user 'false'DB Name 'true

?


??3.也可以直接更改DB模式:

?ALTER? DATABASE? DealManager SET? MULTI_USERAlTER? DEALMANAGER SINGLE_USER


? 倘若在单用户模式下恢复多用户模式或者操作DB发现操作总是失败,这是因为有其他进程占用该DB的缘故,有人会直接手动查看监视器中的进程,把与目的库有关的KILL掉,这种方法是很粗糙的,效率低而且有操作错误进程的危险。其实,实时操作DB的进程在master中是有记录的,我们只需要一个select语句就知道该进程,? 然后Kill相关进程:

[sql]?view plaincopyprint?
  1. ----------------------Kill?the?process?in?Single?Modle???
  2. select?*?from?master..sysprocesses??
  3. where?dbid=db_id('DB?Name')??
  4. --Kill?spid??

也写了个小脚本执行这个操作:

DECLARE?@kid?varchar(100)??
  • SET?@kid=''??
  • SELECT?@kid=@kid+'KILL'+CAST(spid?as?Varchar(10))??
  • FROM?master..sysprocesses??
  • WHERE?dbid=DB_ID('DB?Name')??
  • PRINT?@kid??
  • EXEC(@kid) ?
  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    SQLServer下,单/多用户模式转换的三种方法:

    ? 1.直接在Management Studio中设置相关数据库的Properties:Options-->Restrict Access下设置MULTI/SINGLE_USER。

    ?? 2.若是其他人设置Server为单用户模式,或者其他未知进程占用操作DB,再使用第一种方法发现该DB的Properties是打不开的,这时应该使用如下T-SQL进行操作:

    ?
      推荐文章
        热点阅读