SqlServer: 单用户模式下查杀相关进程实现单/多用户转换 .
2012-08-28 12:51 立雪三尺 阅读(1937) 评论(2) 编辑 收藏 举报SQLServer下,单/多用户模式转换的三种方法:
1.直接在Management Studio中设置相关数据库的Properties:Options-->Restrict Access下设置MULTI/SINGLE_USER。
2.若是其他人设置Server为单用户模式,或者其他未知进程占用操作DB,再使用第一种方法发现该DB的Properties是打不开的,这时应该使用如下T-SQL进行操作:
3.也可以直接更改DB模式:
-----------------------Conversion Between Single Modle and Multiple Modle,the second method: ALTER DATABASE DealManager SET MULTI_USER AlTER DATABASE DEALMANAGER SET SINGLE_USER
倘若在单用户模式下恢复多用户模式或者操作DB发现操作总是失败,这是因为有其他进程占用该DB的缘故,有人会直接手动查看监视器中的进程,把与目的库有关的KILL掉,这种方法是很粗糙的,效率低而且有操作错误进程的危险。其实,实时操作DB的进程在master中是有记录的,我们只需要一个select语句就知道该进程, 然后Kill相关进程:
- ----------------------Kill the process in Single Modle
- select * from master..sysprocesses
- where dbid=db_id('DB Name')
- --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)
作者:立雪三尺
出处:http://www.cnblogs.com/songsz1/
我滴生命是如此滴辉煌!我滴生活是如此滴灿烂!
关于作者:初出茅庐,职场菜鸟。静如瘫痪,动若癫痫。!姓名不知,生死不详!
如有问题或建议,请多多赐教! 如无,出门左转是政府。
本文版权归作者所有,欢迎转载,不一定非得在显眼处给出原文链接
如有想不开的暴击我
最后严重警告:本文作者真的是名程序员。