Physical_onlyオプションを使用してcheckdbを実行していますが、次のような複数のエラーで失敗します。
メッセージ8965、レベル16、状態1、行1
テーブルエラー:オブジェクトID 1557580587、インデックスID 1、パーティションID 72057594088456192、割り当てユニットID 72057594177454080(行内データタイプ)。ページ(1:13282192)、スロット3、テキストID 6370769698816のオフローデータノードは、ページ(0:0)、スロット0で参照されていますが、スキャンでは見られませんでした。
メッセージ8965、レベル16、状態1、行1
テーブルエラー:オブジェクトID 1557580587、インデックスID 1、パーティションID 72057594088456192、割り当てユニットID 72057594177454080(行内データタイプ)。ページ(1:13282192)、スロット5、テキストID 6370769764352のオフローデータノードは、ページ(0:0)、スロット0で参照されていますが、スキャンでは見られませんでした。
CHECKDBは、テーブル 'TableX'で0の割り当てエラーと5255の一貫性エラーを検出しました(オブジェクトID 1557580587)。
CHECKDBはデータベース 'DatabaseX'で0割り当てエラーと5255一貫性エラーを検出しました。 repair_allow_data_lossは、DBCC CHECKDB(DWH_LAND)によって検出されたエラーの最小修復レベルです。
ただし、完全なcheckdbは成功します。
CHECKDBにより、データベース 'DatabaseX'で0の割り当てエラーと0の一貫性エラーが見つかりました。 DBCCの実行が完了しました。 DBCCがエラーメッセージを出力した場合は、システム管理者に連絡してください。
TableXには約200 000行があり、それに列ストアインデックスがクラスター化されています。
次のバージョンのSQL Serverを使用しています:
Microsoft SQL Server 2017(RTM-CU13)(KB4466404)-14.0.3048.4
心配する必要がありますか?
はい、これはCU14までのSQL Server 2017の不具合です。 SQL Server 2016の非クラスター化列ストアインデックス にも同様の問題がありました。
詳細は、このビデオで説明しています: CHECKDB Bug With SQL Server 2017 And ColumnStore Indexes
問題のよりポータブルな再現はこれです:
SELECT *, CONVERT(NVARCHAR(MAX), m.text + m.text + m.text + m.text + m.text) AS texty
INTO dbo.corrupt
FROM sys.messages AS m;
CREATE CLUSTERED COLUMNSTORE INDEX cx_corrupt ON dbo.corrupt;
DBCC CHECKDB WITH PHYSICAL_ONLY;
DROP TABLE dbo.corrupt;