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