Solo il checkdb fisico ha esito negativo, ma quello completo è stato completato correttamente


13

Sto eseguendo checkdb con opzione physical_only e non riesce con più errori come di seguito:

Messaggio 8965, livello 16, stato 1, riga 1
Errore tabella: ID oggetto 1557580587, ID indice 1, ID partizione 72057594088456192, ID unità allocazione 72057594177454080 (digitare i dati in riga). Il nodo dati fuori riga alla pagina (1: 13282192), slot 3, ID testo 6370769698816 fa riferimento a pagina (0: 0), slot 0, ma non è stato visualizzato nella scansione.
Messaggio 8965, livello 16, stato 1, riga 1
Errore tabella: ID oggetto 1557580587, ID indice 1, ID partizione 72057594088456192, ID unità allocazione 72057594177454080 (digitare i dati in riga). Il nodo di dati fuori riga alla pagina (1: 13282192), slot 5, ID testo 6370769764352 è referenziato dalla pagina (0: 0), slot 0, ma non è stato visualizzato nella scansione.
CHECKDB ha trovato 0 errori di allocazione e 5255 errori di coerenza nella tabella 'TableX' (ID oggetto 1557580587).
CHECKDB ha trovato 0 errori di allocazione e 5255 errori di coerenza nel database 'DatabaseX' . repair_allow_data_loss è il livello di riparazione minimo per gli errori rilevati da DBCC CHECKDB (DWH_LAND).

Tuttavia il checkdb completo ha esito positivo:

CHECKDB ha trovato 0 errori di allocazione e 0 errori di coerenza nel database 'DatabaseX'. Esecuzione DBCC completata. Se DBCC ha stampato messaggi di errore, contattare l'amministratore di sistema.


TableX ha circa 200000 righe e ha un indice columnstore cluster su di esso.
Stiamo utilizzando la seguente versione di SQL Server:
Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4

Dovrei essere preoccupato?

Risposte:


13

Sì, questo è un difetto in SQL Server 2017 fino a CU14. Si è verificato un problema simile con gli indici columnstore non cluster in SQL Server 2016 .

È dettagliato in questo video: Bug CHECKDB con indici SQL Server 2017 e ColumnStore

Una replica più portatile del problema è questa:

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;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.