sql数据库用代码还原时报这样的错误,那位遇到过??
数据库还原失败!因为数据库正在使用,所以无法获得对数据库的独占访问权。
RESTORE DATABASE 正在异常终止。
已将数据库上下文更改为“master”
[解决办法]
数据库正在使用,你这不是备份数据库啊。
[解决办法]
有其他进程在使用你想要恢复的数据库,就会这样,要在管理-当前活动中找到使用此数据库的进程,
然后右键取消进程,或者干脆重启一下sql服务
[解决办法]
--原因其他用户或进程在用着数据库/* 关闭用户打开的进程处理 */ 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 '
[解决办法]
先把数据库设成单用户再还原