首页 > 数据库 > SQL Server > 正文

因为数据库正在使用,所以未能获得对数据库的排他访问权解决方法

2024-08-31 01:02:31
字体:
来源:转载
供稿:网友
在SQL 2005中恢复数据库的时候遇到这个错误:因为数据库正在使用,所以未能获得对数据库的排他访问权

解决办法

/*
断开所有用户打开的连接
*/
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 'hj'

--恢复数据库.
RESTORE DATABASE hj FROM disk='D:/hj.dat'





在企业管理器里面:  

  右键数据库--->>所有任务-->>分离数据库--->>清除(把所有的连接)--取消(注意,不要点确定,不然就分离了数据库) 。此时显示连接数为0。再还原数据库就成功了。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表