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

sql-server – dbcc checkdb(‘XYZ’,REPAIR_ALLOW_DATA_LOSS)表

发布时间:2020-12-12 16:58:53 所属栏目:MsSql教程 来源:网络整理
导读:我有一个数据库,XYZ,有一个损坏的日志文件,现在由于日志文件完全无法使用,这使得这个特定的数据库无法使用,我需要能够重建它. 我已经对这个过程做了很多研究,但是我被卡在了dbcc checkdb上. 我跑了命令 alter database xyz SET single_user with immediate ro
我有一个数据库,XYZ,有一个损坏的日志文件,现在由于日志文件完全无法使用,这使得这个特定的数据库无法使用,我需要能够重建它.

我已经对这个过程做了很多研究,但是我被卡在了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.

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

我跑了

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

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

有任何想法吗?

解决方法

将数据库还原为多用户模式并尝试以下操作.
alter database xyz SET single_user with rollback immediate 

dbcc checkdb('xyz',REPAIR_ALLOW_DATA_LOSS)

可能另一个进程是在你进入之前抓住数据库连接.结合这两个语句应确保您获得该连接.

(编辑:李大同)

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

    推荐文章
      热点阅读