Dbcc
DBCC CHECKDB 一致性錯誤
我在復製表時遇到問題,我最終將其追踪到源表上的一致性錯誤,但我對導致一致性錯誤的原因感到困惑。
我執行 DBCC Checkdb 並在表上發現以下錯誤
消息 2570,級別 16,狀態 3,第 1 行頁面 (1:5217772),對象 ID 1038014829 中的插槽 16,索引 ID 1,分區 ID 349502316544000,分配單元 ID 349502316544000(類型“行內數據”)。列“MHGPTX”值超出數據類型“varchar”的範圍。將列更新為合法值。
我使用 DBCC PAGE 查找表中的哪一行導致了問題,並追踪了有問題的行。
插槽 16 列 6 偏移量 0x28 長度 150
MHGPTX =
$$ Error converting to string (length 150 bytes) $$
這就是我卡住的地方,欄位中的數據看起來很好,數據遠低於列的最大大小,我可以查詢行等。
我在網上找到了一些類似問題的參考資料,通過使用相同的數據更新行來解決問題,所以我嘗試了,但沒有任何變化。
任何建議將不勝感激
已經有一段時間了,但我意識到我從未更新過這個。
我發現錯誤是由雙字節字元(亞洲語言)引起的,並且第二個字節被截斷。我能夠通過將列增加一,然後將其更改回原始寬度來解決問題。這截斷了雙字節字元的揮之不去的第一個字節,並且 checkdb 現在返回沒有錯誤。
我會嘗試:
- 刪除所有索引
- 重建聚集索引
- 執行 dbcc
- 創建索引
- 執行 dbcc
我還會檢查硬體(磁碟)是否存在不一致。