读书人

sql数据库用代码还原时报这样的异常

发布时间: 2012-03-01 10:25:46 作者: rapoo

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

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

SQL code
--原因其他用户或进程在用着数据库/*   关闭用户打开的进程处理   */   use   master  goif   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 '

[解决办法]
先把数据库设成单用户再还原

读书人网 >SQL Server

热点推荐