某客戶(hù)數(shù)據(jù)庫(kù)完整性檢查失敗,日志中沒(méi)有明顯的錯(cuò)誤提示,
運(yùn)行數(shù)據(jù)庫(kù)檢查腳本
dbcc checkdb('enjoy_store1103')
提示如下錯(cuò)誤
/****
消息 2508,級(jí)別 16,狀態(tài) 3,第 6 行
對(duì)于索引 ID 為 0、分區(qū) ID 為 47618849308672、分配單元 ID 為 47618849308672 (類(lèi)型為 In-row data)的對(duì)象 "tb_o_payg",
計(jì)數(shù) In-row data RSVD page 不正確。請(qǐng)運(yùn)行 DBCC UPDATEUSAGE。
消息 2508,級(jí)別 16,狀態(tài) 3,第 6 行
對(duì)于索引 ID 為 0、分區(qū) ID 為 133337892913152、分配單元 ID 為 133337892913152 (類(lèi)型為 In-row data)的對(duì)象 "tb_o_sellg",
計(jì)數(shù) In-row data RSVD page 不正確。請(qǐng)運(yùn)行 DBCC UPDATEUSAGE。
*****/
該數(shù)據(jù)庫(kù)檢查腳本 不帶REPAIR_ALLOW_DATA_LOSS 或者REPAIR_REBUILD參數(shù),
可以不必將數(shù)據(jù)庫(kù)單用戶(hù),不影響營(yíng)業(yè)
根據(jù)提示執(zhí)行語(yǔ)句
dbcc updateusage('enjoy_store1103','tb_o_payg')
dbcc updateusage('enjoy_store1103','tb_o_sellg')
修復(fù)后再檢查,不再提示任何錯(cuò)誤。
微軟幫助提示描述該問(wèn)題
報(bào)告和更正 sysindexes 表的不正確內(nèi)容,該內(nèi)容可能會(huì)導(dǎo)致通過(guò) sp_spaceused 系統(tǒng)存儲(chǔ)過(guò)程產(chǎn)生不正確的空間使用報(bào)表。
DBCC UPDATEUSAGE 對(duì)表和聚集索引中 sysindexes 表的 rows、used、reserved 和 dpages 列進(jìn)行更正。不對(duì)非聚集索引的大小信息進(jìn)行維護(hù)。
如果 sysindexes 中沒(méi)有不正確的內(nèi)容,DBCC UPDATEUSAGE 則不返回?cái)?shù)據(jù)。如果發(fā)現(xiàn)不正確的內(nèi)容,并對(duì)其進(jìn)行更正,同時(shí)沒(méi)有使用 WITH NO_INFOMSGS 選項(xiàng),UPDATEUSAGE 就會(huì)返回 sysindexes 中所更新的行和列。
使用 UPDATEUSAGE 以與空間使用計(jì)數(shù)器同步。DBCC UPDATEUSAGE 在大表或大數(shù)據(jù)庫(kù)上運(yùn)行可能會(huì)需要一些時(shí)間,所以通常只在懷疑 sp_spaceused 所返回的值不正確時(shí)使用。