公司服务器访问后出现很多错误:
用DBCC CHECKDB  检查后发现错误如下:
服务器: 消息 8909,级别 16,状态 1,行 1
表错误: 对象 ID 0,索引 ID 0,页 ID (1:31186)。页首结构中的 PageId = (0:0)。
服务器: 消息 8909,级别 16,状态 1,行 1
表错误: 对象 ID 0,索引 ID 0,页 ID (1:31187)。页首结构中的 PageId = (0:0)。
服务器: 消息 8926,级别 16,状态 1,行 1
表错误: 跨对象链接: 父页 (1:17),槽 36(位于对象 ID 3,索引 ID 1 中)和页 (1:26218),槽 0(位于对象 ID 503672842,索引 ID 1 中)的下一页指针指向了页 (1:31096),但该页不在同一对象中。
服务器: 消息 8936,级别 16,状态 1,行 1
表错误: 对象 ID 3,索引 ID 1。B 树链的链接不匹配。(1:26218)->next = (1:31096),但 (1:31096)->Prev = (1:108)。
服务器: 消息 8928,级别 16,状态 1,行 1
对象 ID 503672842,索引 ID 0: 未能处理页 (1:31116)。详细信息请参阅其它错误。还有很多没列出来!!请问高手该如何修复!数据库很重要的!

解决方案 »

  1.   

    ---TRY
    USE MASTER
    GO
    sp_dboption '数据库名', 'single user', 'true' 
    Go
    DBCC CHECKDB('数据库名', REPAIR_ALLOW_DATA_LOSS) 
    Go
    USE 数据库名
    go
    exec sp_msforeachtable 'DBCC CHECKTABLE("表名",REPAIR_ALLOW_DATA_LOSS)' 
    exec sp_msforeachtable 'DBCC DBREINDEX("表名")' 
    go
    sp_dboption '数据库名', 'single user', 'false' 
    Go 
      

  2.   

    指定 REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD 选项。
    REPAIR_ALLOW_DATA_LOSS 执行由 REPAIR_REBUILD 完成的所有修复,包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象。这些修复可能会导致一些数据丢失。修复操作可以在用户事务下完成以允许用户回滚所做的更改。如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。修复完成后,备份数据库。 
    REPAIR_FAST 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢失数据的危险。 
    REPAIR_REBUILD 执行由 REPAIR_FAST 完成的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。 
      

  3.   

    这些都试试。把索引重建一下。
    -- DBCC  CHECKTABLE  (sysobjects) 
    -- DBCC  CHECKTABLE  (sysindexes) 
    -- DBCC  CHECKTABLE  (syscolumns  ) 
    -- DBCC  CHECKTABLE  (systypes) 
    -- DBCC REINDEX
      

  4.   

    DBCC CHECKDB
        ( 'database_name',  REPAIR_REBUILD) 
      

  5.   

    DBCC 语句的修复级别导致回避了此修复。