今天碰到一个数据库问题,查询一张表的时候报错:
select top 100 * from table  没有问题;
select * from table 报下面的错误:服务器: 消息 7987,级别 22,状态 3,行 1
在数据库 'xinning' 中检测到一个可能的数据库一致性问题。应该对数据库 'xinning' 运行 DBCC CHECKDB 和 DBCC CHECKCATALOG。
再执行:dbcc checkdb(xinning) 语句报下面的提示信息:服务器: 消息 8909,级别 16,状态 1,行 1
表错误: 对象 ID -997982209,索引 ID 232,页 ID (1:4666)。页首结构中的 PageId = (34056:1972051435)。
服务器: 消息 8928,级别 16,状态 1,行 1
对象 ID 85575343,索引 ID 255: 未能处理页 (1:1632)。详细信息请参阅其它错误。
CHECKDB 发现了 0 个分配错误和 1 个一致性错误(在表 '(Object ID -997982209)' 中,该表的对象 ID 为 -997982209)。
...............................................'ipms_measure_baseinfo' 的 DBCC 结果。
服务器: 消息 8944,级别 16,状态 12,行 1
表错误: 对象 ID 85575343,索引 ID 255,页 (1:1632),行 4。测试(ColumnOffsets <= (nextRec - pRec))失败。值为 12353 和 84。
对象 'ipms_measure_baseinfo' 有 1347 行,这些行位于 52 页中。
CHECKDB 发现了 0 个分配错误和 2 个一致性错误(在表 'ipms_measure_baseinfo' 中,该表的对象 ID 为 85575343)。  
数据库

解决方案 »

  1.   

    try this,alter database xinning set single_userdbcc checkdb('xinning',repair_rebuild)alter database xinning set multi_user
      

  2.   

    执行这句话时间超过了10多分钟,
    alter database xinning set single_user
    正常吗?
      

  3.   

    不正常,确保数据库xinning没有在使用状态.
      

  4.   

    执行这句话:dbcc checkdb('xinning',repair_rebuild)打印消息:服务器: 消息 8909,级别 16,状态 1,行 1
    表错误: 对象 ID -997982209,索引 ID 232,页 ID (1:4666)。页首结构中的 PageId = (34056:1972051435)。
    服务器: 消息 8929,级别 16,状态 1,行 1
    对象 ID 85575343: 在文本 ID 1376321536 中发现错误,该文本的所有者是由 RID = (1:937:0) ipm_code = '127077b-133f4d0e3f5-d984a05fa268b7cc6ac052a38960aeb2' 标识的数据记录。
    服务器: 消息 8929,级别 16,状态 1,行 1
    对象 ID 85575343: 在文本 ID 1376518144 中发现错误,该文本的所有者是由 RID = (1:937:1) ipm_code = '127077b-133f4d23f4f-d984a05fa268b7cc6ac052a38960aeb2' 标识的数据记录。
    服务器: 消息 8929,级别 16,状态 1,行 1
    对象 ID 85575343: 在文本 ID 1376714752 中发现错误,该文本的所有者是由 RID = (1:937:2) ipm_code = '127077b-133f4d92cb0-d984a05fa268b7cc6ac052a38960aeb2' 标识的数据记录。
    服务器: 消息 8929,级别 16,状态 1,行 1
    对象 ID 85575343: 在文本 ID 1376911360 中发现错误,该文本的所有者是由 RID = (1:937:3) ipm_code = '127077b-133f4da3e3f-d984a05fa268b7cc6ac052a38960aeb2' 标识的数据记录。
    服务器: 消息 8929,级别 16,状态 1,行 1
    对象 ID 85575343: 在文本 ID 1377107968 中发现错误,该文本的所有者是由 RID = (1:937:4) ipm_code = '127077b-133f4db54cf-d984a05fa268b7cc6ac052a38960aeb2' 标识的数据记录。
    服务器: 消息 8929,级别 16,状态 1,行 1
    对象 ID 85575343: 在文本 ID 1377304576 中发现错误,该文本的所有者是由 RID = (1:937:5) ipm_code = '127077b-133f4dc380b-d984a05fa268b7cc6ac052a38960aeb2' 标识的数据记录。
    服务器: 消息 8929,级别 16,状态 1,行 1
    对象 ID 85575343: 在文本 ID 1377501184 中发现错误,该文本的所有者是由 RID = (1:937:6) ipm_code = '127077b-133f4dd1656-d984a05fa268b7cc6ac052a38960aeb2' 标识的数据记录。
    服务器: 消息 8929,级别 16,状态 1,行 1
    对象 ID 85575343: 在文本 ID 1007484928 中发现错误,该文本的所有者是由 RID = (1:938:11) ipm_code = '81ee8b-13401e7abb4-2bff88ffdc7daddac77f9ceb0ed3ec33' 标识的数据记录。
            DBCC 语句的修复级别导致回避了此修复。
    CHECKDB 发现了 0 个分配错误和 1 个一致性错误(在表 '(Object ID -997982209)' 中,该表的对象 ID 为 -997982209)。
    'xinning' 的 DBCC 结果。
      

  5.   

    再试试这个呢.alter database xinning set single_user
     
    dbcc checkdb('xinning',repair_allow_data_loss)
     
    alter database xinning set multi_user
      

  6.   

    可以解决上面这个问题了,但是还有个问题,我用这张表和它的从表进行连接查询
    select * from 
    ipms_measure_baseinfo a, ipms_measure_data b
    where a.ipcc_code=b.ipcc_code 
    and a.ipm_code=b.ipm_code报错:
    Location:  recbase.cpp:1378
    Expression:  m_offBeginVar < m_SizeRec
    SPID:  52
    Process ID:  3144连接中断
      

  7.   

    在查询分析器中直接执行这句TSQL有无问题?
    看错误信息应该是C++程序的问题吧.
      

  8.   

    SQL查询分析器中怎么会出现这样的错误提示呢? "Location: recbase.cpp:1378"分别执行
    select * from ipms_measure_baseinfo 
    select * from ipms_measure_data 
    看有没问题咯? 有问题的话,再执行一次dbcc checkdb('xinning')
      

  9.   

    单独执行这两句sql没有问题   
    我从新执行了多遍 dbcc checkdb('xinning')    没有问题之后再连接查询
    结果报错:
    SqlDumpExceptionHandler: 进程 53 发生了严重的异常 c0000005 EXCEPTION_ACCESS_VIOLATION。SQL Server 将终止该进程。连接中断
      

  10.   

    是SQL2000吗? 强烈建议安装一下SP4补丁再试试.
      

  11.   

    我已经安装了sp4
    Microsoft SQL Server  2000 - 8.00.2066 
      

  12.   

    记得用过最新版本号是8.00.2055,何来2066? 建议重装一下SQL2000并安装SP4..再不行的话把数据库附加到其他机器试试,若正常的话就是本机的硬件问题.
      

  13.   


    修复了这个问题:在数据库 'xinning' 中检测到一个可能的数据库一致性问题。应该对数据库 'xinning' 运行 DBCC CHECKDB 和 DBCC CHECKCATALOG。修复了这个问题:SqlDumpExceptionHandler: 进程 53 发生了严重的异常 c0000005 EXCEPTION_ACCESS_VIOLATION。SQL Server 将终止该进程。
    我另外建了一个数据库,把有问题的两张表复制过去,然后删除这两张原表,再从新建的数据库中把这两张表复制过来。问题解决。