日期:2014-05-18  浏览次数:20730 次

sql数据库用代码还原时报这样的错误,那位遇到过??
数据库还原失败!因为数据库正在使用,所以无法获得对数据库的独占访问权。
RESTORE DATABASE 正在异常终止。
已将数据库上下文更改为“master”

------解决方案--------------------
数据库正在使用,你这不是备份数据库啊。
------解决方案--------------------
有其他进程在使用你想要恢复的数据库,就会这样,要在管理-当前活动中找到使用此数据库的进程,
然后右键取消进程,或者干脆重启一下sql服务
------解决方案--------------------
SQL code
--原因其他用户或进程在用着数据库

/*   
关闭用户打开的进程处理   
*/   
use   master  
go
if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_killspid]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)   
drop   procedure   [dbo].[p_killspid]     
go    
create   proc   p_killspid   
@dbname   varchar(200) --要关闭进程的数据库名   
as       
declare   @sql     nvarchar(500)       
declare   @spid   nvarchar(20)  

declare   #tb   cursor   for   
select   spid=cast(spid   as   varchar(20))   from   master..sysprocesses   where   dbid=db_id(@dbname)   
open   #tb   
fetch   next   from   #tb   into   @spid   
while   @@fetch_status=0   
begin       
exec('kill   '+@spid)   
fetch   next   from   #tb   into   @spid   
end    
   
close   #tb   
deallocate   #tb   
go
--关闭对数据库account   的连接   
exec   p_killspid     'account'  
go


--结束后删除存储过程   
if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_killspid]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)   
drop   procedure   [dbo].[p_killspid]  
go

--更改排序规则   
--数据库中区分大小写 
alter database test  COLLATE  Chinese_PRC_CS_AS 
 

--恢复默认的不区分大小写
alter database test  COLLATE  Chinese_PRC_CI_AS

------解决方案--------------------
RESTORE DATABASE 表名 FROM DISK = '设备路径' with replace,recovery, 
move '逻辑名称 ' to '路径', 
 move '逻辑名称_log ' to '路径.ldf '

------解决方案--------------------
先把数据库设成单用户再还原