修復系統表(表錯誤- 對象 ID 2。text、ntext 或 image 節點(位於頁 (1-875),槽 0,文本 ID 177078272)與該節點位於頁 (1-500),槽 14 處的引用不匹配)
修復數據庫,應該是一個再熟悉不過的“陌生”東東了。以往修復就使用一般的修復語句即可,今天遇到一個頑固不化的錯誤,NND,
報錯信息如下:
服務器: 消息 8929,級別 16,狀態 1,行 1
對象 ID 2: 在文本 ID 177078272 中發現錯誤,該文本的所有者是由 RID = (1:627:1) id = 1899153811 and indid = 10 標識的數據記錄。
服務器: 消息 8961,級別 16,狀態 1,行 1
表錯誤: 對象 ID 2。text、ntext 或 image 節點(位於頁 (1:875),槽 0,文本 ID 177078272)與該節點位於頁 (1:500),槽 14 處的引用不匹配。
'YINYI' 的 DBCC 結果。
'sysobjects' 的 DBCC 結果。
對象 'sysobjects' 有 419 行,這些行位於 7 頁中。
'sysindexes' 的 DBCC 結果。
對象 'sysindexes' 有 451 行,這些行位於 22 頁中。
CHECKDB 發現了 0 個分配錯誤和 2 個一致性錯誤(在表 'sysindexes' 中,該表的對象 ID 為 2)。
'syscolumns' 的 DBCC 結果。
CHECKDB 發現了 0 個分配錯誤和 2 個一致性錯誤(在數據庫 'YINYI' 中)。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
這個是已經經過修復後仍然存在的問題,因為提示的是系統表sysobjects表存在問題,且有提示了RID及ID,我將此條數據查詢出來,交核對了同類型的數據庫,也就一個欄位不一樣,且表示的是一個所影響的行數,其它並無相應的差別。本來打算放棄的,不過後又嘗試著將一個經常會使用到的一個表的數據全部清除(truncate),再進行CHECKDB則不再出現錯誤。然後將此表中的數據先查詢出來放到臨時表,再清掉所有的數據,再從臨時表中INSERT進來,此時再來CHECKDB,
CHECKDB 發現了 0 個分配錯誤和0 個一致性錯誤(在數據庫 'YINYI' 中)。
DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。
大功告成,此現象說明了其實CHECKDB出來若存在系統表有問題的情況下,我們的系統不會那麼容易壞的。你首先需要檢查的是你平時會用到的表,即使是CHECKTABLE也不一定會出錯,只能根據你軟件中在哪一個點兒會彈錯,分析用到的表,進行依次的排除。
此篇文章寫到這裡希望遇到類似“表錯誤: 對象 ID 2。text、ntext 或 image 節點(位於頁 (1:875),槽 0,文本 ID 177078272)與該節點位於頁 (1:500),槽 14 處的引用不匹配”問題的朋友們細心點兒,希望對大家有幫助!