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

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

概述SQLServer下,单/多用户模式转换的三种方法:   1.直接在Management Studio中设置相关数据库的Properties:Options-->Restrict Access下设置MULTI/SINGLE_USER。    2.若是其他人设置Server为单用户模式,或者其他未知进程占用 *** 作DB,再使用第一种方法发现该DB的Properties是打不开的,这时应该使用如下T-SQ

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

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

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

@H_301_17@ ?
-----------------------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? ----------------------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)   总结

以上是内存溢出为你收集整理的SqlServer: 单用户模式下查杀相关进程实现单/多用户转换 .全部内容,希望文章能够帮你解决SqlServer: 单用户模式下查杀相关进程实现单/多用户转换 .所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1177685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存