修复SQL2000中损坏的表

用Sql2000的数据库,其中有个表 barcode 估计损坏了

在查询分析器执行 select * from barcode

提示

服务器: 消息 3624,级别 20,状态 1,行 1

Location: recbase.cpp:1371
Expression: m_nVars > 0
SPID: 52
Process ID: 776

连接中断


然后

执行  dbcc checktable(lhstock)

提示

服务器: 消息 8928,级别 16,状态 1,行 1
对象 ID 1237579447,索引 ID 0: 未能处理页 (1:13464)。详细信息请参阅其它错误。
服务器: 消息 8944,级别 16,状态 1,行 1
表错误: 对象 ID 1237579447,索引 ID 0,页 (1:13464),行 8。测试(ColumnOffsets <= (nextRec - pRec))失败。值为 16680 和 972。
服务器: 消息 8964,级别 16,状态 1,行 1

修复办法

use master
GO

-- sp_dboption 用于显示或更改数据库选项。当为 single user 选项为 true 时,每次只能有一个用户访问数据库。

sp_dboption 'lhstock','single user','true'                

DBCC CHECKDB('lhstock',REPAIR_ALLOW_DATA_LOSS)

sp_dboption 'lhStock','single user','false'

'lhstock' 的 DBCC 结果。

'Barcode' 的 DBCC 结果。
对象 'Barcode' 有 326848 行,这些行位于 6896 页中。

CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'lhStock' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。


 

原文地址:https://www.cnblogs.com/eric1394/p/598150.html