以文本方式查看主题

-  昂捷论坛  (http://www.enjoyit.com.cn/bbs/index.asp)
--  □-系统配置管理类  (http://www.enjoyit.com.cn/bbs/list.asp?boardid=34)
----  [原创]数据库修复一例:计数 In-row data RSVD page 不正确。请运行 DBCC UPDATEUSAGE  (http://www.enjoyit.com.cn/bbs/dispbbs.asp?boardid=34&id=9307)

--  作者:prcak47
--  发布时间:2015/6/23 16:50:39
--  [原创]数据库修复一例:计数 In-row data RSVD page 不正确。请运行 DBCC UPDATEUSAGE

某客户数据库完整性检查失败,日志中没有明显的错误提示,

 

运行数据库检查脚本
dbcc checkdb(\'enjoy_store1103\')

提示如下错误

 

/****

消息 2508,级别 16,状态 3,第 6 行

对于索引 ID 为 0、分区 ID 为 47618849308672、分配单元 ID 为 47618849308672 (类型为 In-row data)的对象 "tb_o_payg",
计数 In-row data RSVD page 不正确。请运行 DBCC UPDATEUSAGE。


消息 2508,级别 16,状态 3,第 6 行
对于索引 ID 为 0、分区 ID 为 133337892913152、分配单元 ID 为 133337892913152 (类型为 In-row data)的对象 "tb_o_sellg",
计数 In-row data RSVD page 不正确。请运行 DBCC UPDATEUSAGE。

*****/

 

该数据库检查脚本 不带REPAIR_ALLOW_DATA_LOSS 或者REPAIR_REBUILD参数,

可以不必将数据库单用户,不影响营业

 

根据提示执行语句
dbcc updateusage(\'enjoy_store1103\',\'tb_o_payg\')

dbcc updateusage(\'enjoy_store1103\',\'tb_o_sellg\')

修复后再检查,不再提示任何错误。

 

微软帮助提示描述该问题

 

报告和更正 sysindexes 表的不正确内容,该内容可能会导致通过 sp_spaceused 系统存储过程产生不正确的空间使用报表。

 

DBCC UPDATEUSAGE 对表和聚集索引中 sysindexes 表的 rowsusedreserveddpages 列进行更正。不对非聚集索引的大小信息进行维护。

如果 sysindexes 中没有不正确的内容,DBCC UPDATEUSAGE 则不返回数据。如果发现不正确的内容,并对其进行更正,同时没有使用 WITH NO_INFOMSGS 选项,UPDATEUSAGE 就会返回 sysindexes 中所更新的行和列。

使用 UPDATEUSAGE 以与空间使用计数器同步。DBCC UPDATEUSAGE 在大表或大数据库上运行可能会需要一些时间,所以通常只在怀疑 sp_spaceused 所返回的值不正确时使用。