![](/img/trans.png)
[英]Backup/Restore from different database causing Restore failed exclusive access could not be obtained
[英]restore sql server from .bak file Exclusive access could not be obtained
我正在尝试使用 bak 文件恢复我的 sql
我收到错误
无法获得独占访问权限,因为数据库正在使用中
我试过了
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
我也尝试从恢复向导获得相同的结果。
无法获得独占访问权限,因为数据库正在使用中。
方法一
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...'
方法二
alter database database_name
set offline with rollback immediate
alter database database_name
set online
去
不需要编写任何查询来解决这个问题。 我多次遇到同样的问题并通过这种方法解决它:当您恢复数据库时
恢复数据库正在开始...
任何遇到上面列出的问题的人,没有任何建议有效..只需关闭“选项”下的 Taillog 备份..
设置(或保留)此选项将尝试获取源数据库本身的尾日志(即使您的还原源只是一个文件)。 因此,如果源数据库正在使用中(如果您正在制作生产数据库的副本,通常就是这种情况),那么恢复将失败。
当我尝试将生产备份恢复到已经有数据库的开发服务器时,我遇到了这个问题。 我想恢复为副本,这是通过更改目标数据库名称来实现的,但问题实际上出在文件上。 默认情况下,它试图覆盖已经存在的文件。 我通过检查恢复对话框的“文件”页面中的“将所有文件重定位到文件夹”并选择一个新目录来解决这个问题,这样就不会出现文件冲突。
以上解决方案都没有对我有用。 经过多次试验和错误,我停止了 SQL Server Browser,然后恢复成功完成
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.