none
数据库完整新检查出错,怎么恢复 RRS feed

  • 问题

  • 最近在做数据完整性检查时,出现如下错误,怎么修复?

    执行查询“DBCC CHECKDB WITH NO_INFOMSGS
    ”失败,错误如下:“
    数据库 ID 7 中的页 (1:1392) 在 SGAM (1:3) 和 PFS (1:1) 中进行了分配,但未在任何 IAM 中分配。PFS 标志 'MIXED_EXT ALLOCATED   0_PCT_FULL'。
    数据库 ID 7 中的页 (1:8708) 在 SGAM (1:3) 和 PFS (1:8088) 中进行了分配,但未在任何 IAM 中分配。PFS 标志 'MIXED_EXT ALLOCATED   0_PCT_FULL'。
    CHECKDB 发现有 2 个分配错误和 0 个一致性错误与任何单个的对象都没有关联。
    CHECKDB 在数据库 'FwdNgb' 中发现 2 个分配错误和 0 个一致性错误。
    对于由 DBCC CHECKDB (FwdNgb)发现的错误,repair_allow_data_loss 是最低的修复级别。”。失败的原因可能有: 查询本身有问题、未正确设置 "ResultSet" 属性、未正确设置参数或未正确建立连接。


    xulan
    2011年8月25日 1:37

答案

  • 备份数据文件:1.新建一个同名的数据库(数据文件与原来的要一致)  
    2.再停掉sql server(注意不要分离数据库)  
    3.用原数据库的数据文件覆盖掉这个新建的数据库  
    4.再重启sql server  
    USE   MASTER  
    GO  
    SP_CONFIGURE 'ALLOW UPDATES',1
    GO
    RECONFIGURE WITH OVERRIDE  
    GO  
    UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='坏掉数据库名'  
    Go  
    sp_dboption '坏掉数据库名','single user','true'  
    Go  
    --DBCC CHECKDB('DBTABASE_Name)
    DBCC CHECKDB('数据库名称',REPAIR_ALLOW_DATA_LOSS)     
    Go  
    update sysdatabases set status=28 where name='坏掉数据库名'  
    Go  
    sp_configure 'allow updates',0
    GO
    reconfigure with override  
    Go    
    sp_dboption '坏掉数据库名', 'single user','false'  
    Go


    星光总能为我指引方向

    • 已标记为答案 xulanb 2011年10月27日 7:23
    2011年8月25日 6:04

全部回复

  • What's sql version? Is the db partitioned? Do you have good backup?
    2011年8月25日 2:25
  • 备份数据文件:1.新建一个同名的数据库(数据文件与原来的要一致)  
    2.再停掉sql server(注意不要分离数据库)  
    3.用原数据库的数据文件覆盖掉这个新建的数据库  
    4.再重启sql server  
    USE   MASTER  
    GO  
    SP_CONFIGURE 'ALLOW UPDATES',1
    GO
    RECONFIGURE WITH OVERRIDE  
    GO  
    UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='坏掉数据库名'  
    Go  
    sp_dboption '坏掉数据库名','single user','true'  
    Go  
    --DBCC CHECKDB('DBTABASE_Name)
    DBCC CHECKDB('数据库名称',REPAIR_ALLOW_DATA_LOSS)     
    Go  
    update sysdatabases set status=28 where name='坏掉数据库名'  
    Go  
    sp_configure 'allow updates',0
    GO
    reconfigure with override  
    Go    
    sp_dboption '坏掉数据库名', 'single user','false'  
    Go


    星光总能为我指引方向

    • 已标记为答案 xulanb 2011年10月27日 7:23
    2011年8月25日 6:04
  • You can't update system tables since sql2k5.
    2011年8月25日 14:05