web-dev-qa-db-ja.com

物理的なcheckdbのみが失敗していますが、1つが正常に完了しています

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

心配する必要がありますか?

13
Andrzej Błoch

はい、これは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;
13
Erik Darling