baa*_*roz 16 sql sql-server backup
我试图使用bak文件恢复我的SQL
我收到了错误
由于数据库正在使用,因此无法获得独占访问权限
我试过了
USE [master]
ALTER DATABASE myDB
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
Run Code Online (Sandbox Code Playgroud)
并运行查询
USE [master] RESTORE DATABASE myDB
FROM DISK = 'C:\MyDatabase.bak' WITH FILE = 1, NOUNLOAD, STATS = 10
Run Code Online (Sandbox Code Playgroud)
我也尝试从恢复向导得到相同的结果.
由于数据库正在使用,因此无法获得独占访问权限.
MAS*_*MAS 19
方法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...'
Run Code Online (Sandbox Code Playgroud)
方法2
alter database database_name
set offline with rollback immediate
alter database database_name
set online
Run Code Online (Sandbox Code Playgroud)
走
小智 8
不需要编写任何查询来解决此问题.我有几次同样的问题并通过这种方法解决它:当你恢复数据库时
恢复数据库正在启动...
小智 7
任何人都有上面列出的问题,并且没有任何建议有效.只需关闭'选项'下的Taillog备份..
设置(或离开)此选项将尝试获取源数据库本身的尾部日志(即使您的还原源只是一个文件).因此,如果源数据库正在使用(如果您正在执行生产数据库的副本通常就是这种情况),则还原将失败.