还原sql server数据库时,无法获得对数据库的独占访问权

使用SQL语句恢复备份数据库出现错误:因为数据库正在使用,所以未能获得对数据库的排它访问权。 RESTORE DATABASE 操作异常终止

 

 

--查询分析器中,用下面的代码来处理
/*
断开所有用户打开的连接
*/
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  'databaseName'--
--恢复数据库. 红色部分为数据库备份的路径
RESTORE  DATABASE  hj  FROM  disk='D:/backPath.dat'

你可能感兴趣的:(SQL Server)