今天在使用SQL Server2005对某个数据库进行还原操作的时候,出现了如上图问题,经过多次反复尝试(包括关闭所有数据库连接、重启SQL Server服务、重启计算机)均以失败告终,很是郁闷,幸好之前有同事遇到过类似问题,帮我给解决了,而我也记下了下面这句解决此问题的关键SQL语 句:

ALTER DATABASE [datebase] SET OFFLINE WITH ROLLBACK IMMEDIATE

 

关闭SQL Server 数据库所有使用连接

使用存储过程终止:
在查询分析器下创建终止数据库所有接连的存储过程,通过调用该存储过程可以关闭所有使用该数据库的连接操作。
--创建终止使用数据库下所有进程的存储过程,参数为数据库名称
use master 
go
create proc KillSpByDbName(@dbname varchar(20))  
as  
begin  
declare @sql nvarchar(500),@temp varchar(1000)
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  
  set @temp='kill '+rtrim(@spid)
  exec(@temp)
fetch next from getspid into @spid  
end  
close getspid  
deallocate getspid  
end  

--举例使用,关闭数据库下的所有连接操作
Use master  
Exec KillSpByDbName '数据库名称'

posted on 2011-07-22 11:53  代岳强  阅读(198)  评论(0编辑  收藏  举报