还原数据库出错: ” 因为数据库正在使用,所以无法获得对数据库的独占访问权 “ 的解决方案
在还原数据库时 , 有时会提示因为数据库正在使用,所以无法获得对数据库的独占访问权 !!
这时需要在还原数据库前先杀死正在使用数据库的线程 .该解决方案用到了系统表中的 sysprocesses ,若要访问 sysprocesses ,您必须定位到 master 数据库。
以下是杀死正在使用 'Education' 数据库的线程 :
use masterdeclare @dbname varchar ( 20)set @dbname = 'Education' declare @sql nvarchar ( 500)declare @spid int --SPID 值是当用户进行连接时指派给该连接的一个唯一的整数set @sql = 'declare getspid cursor forselect spid from sysprocesses where dbid=db_id(''' + @dbname + ''')'exec ( @sql )open getspidfetch next from getspid into @spidwhile @@fetch_status <>- 1-- 如果 FETCH 语句没有执行失败或此行不在结果集中。beginexec ( 'kill ' + @spid ) -- 终止正常连接fetch next from getspid into @spidendclose getspiddeallocate getspid