sqlserver单用户模式无法改成多用户模式


sqlserver设置成单用户模式后不能正常更改成多用户模式报错如下:

此数据库处于单用户模式,当前某个用户已与其连接。
消息 5069,级别 16,状态 1,第 1 行

处理方法:

第一种利用存储过程杀死正在使用数据库的连接:
USE [master]

GO

 

/****** Object: StoredProcedure [dbo].[killspid] Script Date: 03/28/2011 11:01:32 ******/

SET ANSI_NULLS ON

GO

 

SET QUOTED_IDENTIFIER ON

GO

 

--建一个存储过程,断开所有用户连接。

create proc [dbo].[killspid] (@dbname varchar(20))

as

begin

declare @sql nvarchar(500)

declare @spid int

set @sql='declare getspid cursor for

select spid from sysprocesses where dbid=db_id('''+@dbname+''')'

exec (@sql)

open getspid

fetch next from getspid into @spid

while @@fetch_status<>-1

begin

exec('kill '+@spid)

fetch next from getspid into @spid

end

close getspid

deallocate getspid

end
GO

先在master中创建一个存储过程,用于干掉所有连接,然后调用

 

 

use master

exec killspid '出问题的数据库名'
再更改模式就好了。

第二种直接杀死进程:

declare @kid varchar(8000)
set @kid=''
select @kid=@kid+' kill '+cast(spid as varchar(8))
from master..sysprocesses
where dbid=db_id('数据库名')
Exec(@kid)
更改成多用户模式:

ALTER DATABASE DB_TYZ SET MULTI_USER


Whatever is worth doing is worth doing well.