dbcc checkdb('XYZ',REPAIR_ALLOW_DATA_LOSS)表示XYZ已经打开,一次只能有一个用户

我有一个数据库,XYZ,有一个损坏的日志文件,现在由于日志文件是完全不可用这是呈现此特定的数据库不可用,我需要能够重build它。

我已经对这个过程进行了大量的研究,但是却陷入了dbcc checkdb。

我跑了命令

alter database xyz SET single_user with immediate rollback 

随后

 use master dbcc checkdb('xyz',REPAIR_ALLOW_DATA_LOSS) 

但是我一直在遇到这个错误:

 Msg 924, Level 14, State 1, Line 2 Database 'XYZ' is already open and can only have one user at a time. 

我所研究的一切都表明,数据库需要处于紧急模式,然后该数据库需要处于单用户模式。 如果我将DB恢复为多用户模式,则表示DB需要处于单用户模式。 好吧,我这样做,然后得到这个问题。

我跑了

 select spid from master..sysprocesses where dbid = DB_ID('XYZ') and spid <> @@spid 

检查使用数据库的任何进程,但不返回行,并且日志不显示任何有关正在恢复的数据库或任何性质的东西。 数据库确实显示为“紧急”。

有任何想法吗?

  • SQL Server I / O错误21
  • 将int转换为datetime时溢出
  • 如何使用T-SQL获得SQL实例的最小和最大内存分配?
  • 在SQL Server 2008上将数据库用户还原到服务器login
  • 如果我select了15个以上的领域,那么我会遇到灾难性的失败
  • 我如何创build一个数据库备份replace以前创build的备份文件?
  • One Solution collect form web for “dbcc checkdb('XYZ',REPAIR_ALLOW_DATA_LOSS)表示XYZ已经打开,一次只能有一个用户”

    将数据库恢复到多用户模式,并尝试如下所示。

     alter database xyz SET single_user with rollback immediate dbcc checkdb('xyz',REPAIR_ALLOW_DATA_LOSS) 

    可能另一个过程就是在进入数据库之前抓取数据库连接。 结合这两个语句应该确保你得到这个连接。

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.