テーブルの複製に問題があり、最終的にソーステーブルの整合性エラーまで追跡しましたが、整合性エラーの原因について困惑しています。
DBCC Checkdbを実行したところ、テーブルに次のエラーが見つかりました
メッセージ2570、レベル16、状態3、行1ページ(1:5217772)、オブジェクトID 1038014829のスロット16、インデックスID 1、パーティションID 349502316544000、割り当てユニットID 349502316544000(タイプ「行内データ」)。列「MHGPTX」の値がデータ型「varchar」の範囲外です。列を有効な値に更新します。
テーブル内のどの行が問題の原因であるかをDBCCPAGEを使用して、問題のある行を追跡しました。
スロット16列6オフセット0x28長さ150
MHGPTX = [文字列(長さ150バイト)への変換エラー]
これは私が行き詰まったところです、フィールドのデータはうまく見えます、データは列の最大サイズをはるかに下回っています、私は行を照会することができます、など。
同じデータを使用して行を更新することで問題が解決された、同様の問題への参照がオンラインでいくつか見つかったので、それを試しましたが、変更はありませんでした。
アドバイスをいただければ幸いです
しばらく経ちましたが、更新したことがないことに気づきました。
エラーの原因は2バイト文字(アジア言語)で、2番目のバイトが切り捨てられていることがわかりました。列を1つ増やしてから、元の幅に戻すことで、問題を修正することができました。これにより、2バイト文字の長引く最初のバイトが切り捨てられ、checkdbがエラーなしで返されるようになりました。
私はそれを試してみます:
また、ハードウェア(ディスク)に不整合がないかチェックします。