数据库恢复的问题!!

luckyyeung 2004-12-28 02:32:07
我用backup备份的数据库,然后用restore恢复,怎么提示'因为数据库正在使用,所以未能获得对数据库的排他访问权',请问是什么原因?
...全文
151 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckyyeung 2004-12-29
  • 打赏
  • 举报
回复
我用sp_detach_db先断开数据库连接,然后用sp_attach_db讲备份的数据库附加到服务器,运行时提示'无法分离数据库**,因为它当前正在使用'
warran 2004-12-29
  • 打赏
  • 举报
回复
谢谢 zjcxc(邹建) 我按你的说法已经搞定这种在线的数据库恢复
vinsonshen 2004-12-29
  • 打赏
  • 举报
回复
得把该数据库所有连接进程杀掉才能进行分离数据库
long0104 2004-12-29
  • 打赏
  • 举报
回复
说明你覆盖还原的数据库正在使用,可重新建立一个库再还原
或停用待覆盖的库,如不只是何处使用,可先停用库,再使用后
用restore恢复.
zjcxc 2004-12-29
  • 打赏
  • 举报
回复
按我的方法去做
zjcxc 2004-12-28
  • 打赏
  • 举报
回复
--如果你是要强制恢复,则可以用下面的代码断开指定数据库的所有用户连接,注意修改库名

--断开指定库的所有用户连接(在master数据库中进行)

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 sysname --要断开连接的数据库名
as
declare @s nvarchar(1000)
declare tb cursor local for
select s='kill '+cast(spid as varchar)
from master..sysprocesses
where dbid=db_id(@dbname)

open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
go

--调用
exec p_killspid 'aa'
WangZWang 2004-12-28
  • 打赏
  • 举报
回复
说明你覆盖还原的数据库正在使用,可重新建立一个库再还原
或停用待覆盖的库,如不只是何处使用,可先停用库,再使用后
用restore恢复.
zjcxc 2004-12-28
  • 打赏
  • 举报
回复
你可以恢复成另一个数据库名,注意修改数据文件和日志文件名:

企业管理器
--右键"数据库"
--所有任务
--还原数据库
--"还原为数据库库"中输入还原后的数据库名
--还原选择"从设备"--选择设备--添加--添加你的备份文件--确定,回到数据库还原的界面
--备份号--选择内容--选择你要恢复那次备份的内容
--选项--将"移至物理文件名"中的物理文件名修改为你的数据文件要存放的文件名
--如果要还原的数据库已经存在,选择"在现有数据库上强制还原"-
-确定
zjcxc 2004-12-28
  • 打赏
  • 举报
回复
因为数据库正在使用,所以无法恢复

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧