步步为营:因为数据库正在使用,所以无法获得对数据库的独占访问权
2012-09-19 15:06 薛凯凯圆滚滚 阅读(284) 评论(1) 编辑 收藏 举报还原数据库出错: ” 因为数据库正在使用,所以无法获得对数据库的独占访问权 “ 的解决方案
在还原数据库时 , 有时会提示因为数据库正在使用,所以无法获得对数据库的独占访问权 !!
这时需要在还原数据库前先杀死正在使用数据库的线程 .
该解决方案用到了系统表中的 sysprocesses ,若要访问 sysprocesses ,您必须定位到 master 数据库。
以下是杀死正在使用 'Education' 数据库的线程 :
use master declare @dbname varchar ( 20) set @dbname = 'Education' declare @sql nvarchar ( 500) declare @spid int --SPID 值是当用户进行连接时指派给该连接的一个唯一的整数 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-- 如果 FETCH 语句没有执行失败或此行不在结果集中。 begin exec ( 'kill ' + @spid ) -- 终止正常连接 fetch next from getspid into @spid end close getspid deallocate getspid