加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

从.bak文件还原sql server无法获取独占访问权限

发布时间:2020-12-12 16:11:50 所属栏目:MsSql教程 来源:网络整理
导读:我试图恢复我的sql使用bak文件 我收到错误 无法获取独占访问权限,因为数据库正在使用中 我试过了 USE [master]ALTER DATABASE myDBSET SINGLE_USER WITH ROLLBACK IMMEDIATE; 并运行查询 USE [master] RESTORE DATABASE myDB FROM DISK = 'C:MyDatabase.bak'
我试图恢复我的sql使用bak文件

我收到错误

无法获取独占访问权限,因为数据库正在使用中

我试过了

USE [master]
ALTER DATABASE myDB
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

并运行查询

USE [master] RESTORE DATABASE  myDB
   FROM DISK = 'C:MyDatabase.bak' WITH  FILE = 1,NOUNLOAD,STATS = 10

我也从恢复向导尝试了相同的结果.

无法获取独占访问权限,因为数据库正在使用中.

解决方法

方法1
declare @sql as varchar(20),@spid as int

    select @spid = min(spid)  from master..sysprocesses  where dbid = db_id('<database_name>')  and spid != @@spid    

    while (@spid is not null)

    begin

    print 'Killing process ' + cast(@spid as varchar) + ' ...'

    set @sql = 'kill ' + cast(@spid as varchar)

exec (@sql)

select 

    @spid = min(spid)  

from 

    master..sysprocesses  

where 

    dbid = db_id('<database_name>') 

    and spid != @@spid
 end 

 print 'Process completed...'

方法2

alter database database_name
  set offline with rollback immediate
  alter database database_name
  set online

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读