--应该是表或数据库损坏,先用下面的语句,检查/修复数据库/并整理索引碎片(需要比较长的时间,请在系统空闲时进行此工作)USE MASTER
GOsp_dboption '你的数据库名', 'single user', 'true'
GoDBCC CHECKDB('你的数据库名', REPAIR_REBUILD) 
GoUSE 你的数据库名
goexec sp_msforeachtable 'DBCC CHECKTABLE(''?'',REPAIR_REBUILD)'
exec sp_msforeachtable 'DBCC DBREINDEX(''?'')'
gosp_dboption '你的数据库名', 'single user', 'false'
Go

解决方案 »

  1.   

    修复时出现下面的错误:
    ...(部分省略)
    表错误: 对象 ID 1028914737,索引 ID 0,页 (1:6316),行 36。测试(ColumnOffsets <= (nextRec - pRec))失败。值为 617 和 133。
    'GL_accsum' 的 DBCC 结果。
            DBCC 语句的修复级别导致回避了此修复。
            DBCC 语句的修复级别导致回避了此修复。
    对象 'GL_accsum' 有 1191 行,这些行位于 22 页中。
    CHECKTABLE 发现了 0 个分配错误和 2 个一致性错误(在表 'GL_accsum' 中,该表的对象 ID 为 1028914737)。
    repair_allow_data_loss 是最低的修复级别(对于由 DBCC CHECKTABLE (UFDATA_023_2004.dbo.GL_accsum repair_rebuild) 发现的错误而言)。
    服务器: 消息 3624,级别 20,状态 1,行 1
     
    Location:  recbase.cpp:1374
    Expression:  m_nVars > 0
    SPID:  51
    Process ID:  492
    ODBC: 消息 0,级别 16,状态 1
    通讯链接失败连接中断
      

  2.   

    --单独修复 'GL_accsum' use 你的库名
    gosp_dboption '你的数据库名', 'single user', 'true'
    GoDBCC CHECKTABLE('GL_accsum',REPAIR_ALLOW_DATA_LOSS)  --这种可能会丢失一部分数据库
    gosp_dboption '你的数据库名', 'single user', 'false'
      

  3.   

    这可能是sqlserver的bug或者sqlserver发生了损坏,请升级到sp3