Fizyczne sprawdzanie tylko checkdb kończy się niepowodzeniem, ale pełne zakończyło się pomyślnie


13

Wykonuję checkdb z opcją physical_only i kończy się niepowodzeniem z wieloma błędami, takimi jak poniżej:

Msg 8965, poziom 16, stan 1, wiersz 1
Błąd tabeli: identyfikator obiektu 1557580587, indeks ID 1, identyfikator partycji 72057594088456192, identyfikator jednostki 72057594177454080 (wpisz dane w wierszu). Węzeł danych poza wierszem na stronie (1: 13282192), szczelina 3, identyfikator tekstowy 6370769698816 jest przywoływany przez stronę (0: 0), szczelina 0, ale nie został zauważony podczas skanowania.
Msg 8965, poziom 16, stan 1, wiersz 1
Błąd tabeli: identyfikator obiektu 1557580587, indeks ID 1, identyfikator partycji 72057594088456192, identyfikator jednostki 72057594177454080 (wpisz dane w wierszu). Węzeł danych poza wierszem na stronie (1: 13282192), szczelina 5, identyfikator tekstowy 6370769764352 jest przywoływany przez stronę (0: 0), szczelina 0, ale nie został zauważony podczas skanowania.
CHECKDB znalazł 0 błędów alokacji i 5255 błędów spójności w tabeli „TableX” (identyfikator obiektu 1557580587).
CHECKDB znalazł 0 błędów alokacji i 5255 błędów spójności w bazie danych „DatabaseX” . repair_allow_data_loss to minimalny poziom naprawy błędów wykrytych przez DBCC CHECKDB (DWH_LAND).

Jednak pełny checkdb kończy się powodzeniem:

CHECKDB znalazł 0 błędów alokacji i 0 błędów spójności w bazie danych „DatabaseX”. Wykonanie DBCC zakończone. Jeśli DBCC wydrukuje komunikaty o błędach, skontaktuj się z administratorem systemu.


Tabela X ma około 200 000 wierszy i zawiera klastrowany indeks magazynu kolumn.
Używamy następującej wersji programu SQL Server:
Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4

Czy powinienem się martwić?

Odpowiedzi:


13

Tak, to wada w SQL Server 2017 do wersji CU14. Wystąpił podobny problem z nieklastrowanymi indeksami magazynu kolumn w SQL Server 2016 .

Jest to szczegółowo opisane w tym filmie: Błąd CHECKDB w SQL Server 2017 i indeksy ColumnStore

Bardziej przenośna wersja tego problemu:

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;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.