Checkdb fisik saja gagal, tetapi penuh berhasil diselesaikan

13

Saya menjalankan checkdb dengan opsi physical_only dan gagal dengan banyak kesalahan seperti di bawah ini:

Msg 8965, Level 16, State 1, Line 1
Table error: Object ID 1557580587, ID indeks 1, ID partisi 72057594088456192, ID unit alokasi 72057594177454080 (ketik Data baris-in). Node data offline pada halaman (1: 13282192), slot 3, teks ID 6370769698816 dirujuk oleh halaman (0: 0), slot 0, tetapi tidak terlihat dalam pemindaian.
Msg 8965, Level 16, State 1, Line 1
Table error: Object ID 1557580587, ID indeks 1, ID partisi 72057594088456192, ID unit alokasi 72057594177454080 (ketik Data baris-in). Node data offline pada halaman (1: 13282192), slot 5, ID teks 6370769764352 dirujuk oleh halaman (0: 0), slot 0, tetapi tidak terlihat dalam pemindaian.
CHECKDB menemukan 0 kesalahan alokasi dan 5255 kesalahan konsistensi dalam tabel 'TableX' (objek ID 1557580587).
CHECKDB menemukan 0 kesalahan alokasi dan 5255 kesalahan konsistensi dalam database 'DatabaseX' . repair_allow_data_loss adalah tingkat perbaikan minimum untuk kesalahan yang ditemukan oleh DBCC CHECKDB (DWH_LAND).

Namun checkdb penuh berhasil:

CHECKDB menemukan 0 kesalahan alokasi dan 0 kesalahan konsistensi dalam database 'DatabaseX'.Eksekusi DBCC selesai. Jika DBCC mencetak pesan kesalahan, hubungi administrator sistem Anda.


TableX memiliki sekitar 200 000 baris dan memiliki indeks kolom berkerumun di atasnya.
Kami menggunakan versi SQL Server berikut:
Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4

Haruskah saya khawatir?

Andrzej Błoch
sumber

Jawaban:

13

Ya, ini merupakan kerusakan pada SQL Server 2017 hingga CU14. Ada masalah serupa dengan indeks columnstore nonclustered di SQL Server 2016 .

Detail dalam video ini: CHECKDB Bug Dengan SQL Server 2017 Dan Indeks ColumnStore

Repro yang lebih portabel dari masalah ini adalah ini:

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;
Erik Darling
sumber