Dbcc

DBCC CHECKDB 一致性錯誤

  • February 5, 2019

我在復製表時遇到問題,我最終將其追踪到源表上的一致性錯誤,但我對導致一致性錯誤的原因感到困惑。

我執行 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

我還會檢查硬體(磁碟)是否存在不一致。

引用自:https://dba.stackexchange.com/questions/109382