RT,我有一数据库置疑了 ,DBCC CHECKDB 提示消息 211,级别 23,状态 51,第 1 行
可能发生了架构损坏。请运行 DBCC CHECKCATALOG。
消息 0,级别 20,状态 0,第 0 行
当前命令发生了严重错误。应放弃任何可能产生的结果。运行  DBCC CHECKCATALOG 后,再运行DBCC CHECKDB还是原来的提示。DBCC CHECKTABLE 提示 :
无法在数据库 mydb 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式求各位高手

解决方案 »

  1.   

    先把数据库设置为紧急模式 ALTER DATABASE XXX set emergency  然后再DBCC CHECKDB
      

  2.   


    --①设置数据库为可更新状态
    use master
    go
    sp_configure 'allow updates',1
    go
    reconfigure with override
    go--②将数据库模式改为紧急
    ALTER DATABASE mydb SET EMERGENCY--③更改数据库单用户使用模式
    sp_dboption 'mydb ', 'single user', 'true'--④重建日志文件
    dbcc checkdb('mydb ',REPAIR_ALLOW_DATA_LOSS)--⑤检查数据库状态(可省略)
    DBCC CHECKDB('mydb ')--⑥取消单用户使用模式
    sp_dboption 'mydb ','dbo use only','false'
    go--⑦改变数据库可更新状态
    sp_configure 'allow updates', 0
    reconfigure wITh override
    Go
      

  3.   

    好吧,我谢谢我的语句
    use master
    go
    sp_configure 'allow updates',1
    go
    reconfigure with override
    go
    ALTER DATABASE mydb SET EMERGENCY
    go
    alter database mydb  set single_user 
    go
    dbcc checkdb('mydb')
    --此处报错
    --消息 211,级别 23,状态 51,第 1 行
    --可能发生了架构损坏。请运行 DBCC CHECKCATALOG。
    --消息 0,级别 20,状态 0,第 0 行
    --当前命令发生了严重错误。应放弃任何可能产生的结果。
    --然后执行
     DBCC CHECKCATALOG
    --再执行
    dbcc checkdb('mydb')
    --还是原来的错误
    dbcc checktalbe('table')
    --提示
    --消息 3908,级别 16,状态 1,第 1 行
    --无法在数据库 'mydb' 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式
      

  4.   

    上面没写恢复参数。use master
    go
    sp_configure 'allow updates',1
    go
    reconfigure with override
    go
    ALTER DATABASE mydb SET EMERGENCY
    go
    alter database mydb  set single_user 
    go
    dbcc checkdb('mydb',REPAIR_ALLOW_DATA_LOSS)
    --此处报错
    --消息 211,级别 23,状态 51,第 1 行
    --可能发生了架构损坏。请运行 DBCC CHECKCATALOG。
    --消息 0,级别 20,状态 0,第 0 行
    --当前命令发生了严重错误。应放弃任何可能产生的结果。
    --然后执行
     DBCC CHECKCATALOG
    --再执行
    dbcc checkdb('mydb',REPAIR_ALLOW_DATA_LOSS)
    --还是原来的错误
    dbcc checktalbe('table',REPAIR_ALLOW_DATA_LOSS)
    --提示
    --消息 3908,级别 16,状态 1,第 1 行
    --无法在数据库 'mydb' 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式
      

  5.   


    参考http://blog.csdn.net/xhliugreat/article/details/7873583
      

  6.   

    DBCC CHECKCATALOG  应该在被置疑的数据库执行吧  
      

  7.   

    DBCC CHECKCATALOG(mydb)
    这样执行的。
      

  8.   

    DBCC CHECKCATALOG  执行有报错误吗?