0

我已将我的数据库设置为受限用户模式。我正在尝试从备份中恢复它,但出现以下错误:

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

在单用户模式下得到同样的错误

连接了一个进程,但是每次我将其终止时,都会连接一个具有不同 SPID 的进程。这是预期的还是问题所在(我不是 DBA!)

我试过了:

  • 谷歌搜索解决方案:)
  • 分离数据库(失败并出现关于数据库锁定的类似错误)

我很紧张放弃数据库(它只是 UAT,但仍然......)

接下来是什么?

4

3 回答 3

1

此处描述了正确的程序:

http://technet.microsoft.com/en-us/library/ms345598.aspx

于 2013-07-30T05:32:05.240 回答
0

好的,这对我来说并不能解决问题,但是我遇到了这个来杀死所有进程,这是一个很好的脚本,因为它确定有两个进程连接并一击杀死它们 - 也许它会对任何人都有效否则有同样的问题:

declare @sql as varchar(20), @spid as int
select @spid = min(spid)  from master..sysprocesses  where dbid = db_id('LesMillsCmsUat') 
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('LesMillsCmsUat') 
        and spid != @@spid
end 

print 'Process completed...'

并且此脚本成功使数据库脱机,但通过 UI 执行此操作失败 - 虽然仍然没有为我解决问题 - 仍然是相同的恢复问题:

alter database LesMillsCmsUat set offline with rollback immediate
alter database LesMillsCmsUat
set online
go
于 2013-07-30T05:48:12.887 回答
0

最主要的是我不得不停止 Umbraco 使用的应用程序池(这是 DB 的用途),就在此之前,我还根据 Curt 的建议停止并重新启动了 DB 服务器(现在请记住,这已经解决了类似的问题过去对我来说是个问题,尽管我不确定这对我的情况是否真的有任何影响并且可能没有必要)。

推理:显然 Umbraco 一直在连接。通常将数据库设置为受限用户是因为 Umbraco 应用程序使用的帐户没有提升权限才能连接到数据库,所以我不明白为什么我需要停止池。如果有人可以提供原因,这就是我一直在寻找的“原因”,我会将其标记为答案。

于 2013-07-30T23:22:43.663 回答