Только физический checkdb не работает, но полный завершен успешно


13

Я выполняю checkdb с параметром Physical_only, и он завершается с несколькими ошибками, как показано ниже:

Сообщение 8965, уровень 16, состояние 1, строка 1
Ошибка таблицы: идентификатор объекта 1557580587, идентификатор индекса 1, идентификатор раздела 72057594088456192, идентификатор блока выделения 72057594177454080 (тип In-row data). На узел данных вне строки на странице (1: 13282192), слот 3, текстовый идентификатор 6370769698816 ссылается страница (0: 0), слот 0, но он не был виден при сканировании.
Сообщение 8965, уровень 16, состояние 1, строка 1
Ошибка таблицы: идентификатор объекта 1557580587, идентификатор индекса 1, идентификатор раздела 72057594088456192, идентификатор блока выделения 72057594177454080 (тип In-row data). На узел данных вне строки на странице (1: 13282192), слот 5, текстовый идентификатор 6370769764352 ссылается страница (0: 0), слот 0, но он не был виден при сканировании.
CHECKDB обнаружил 0 ошибок распределения и 5255 ошибок согласованности в таблице «TableX» (идентификатор объекта 1557580587).
CHECKDB обнаружил 0 ошибок размещения и 5255 ошибок согласованности в базе данных «DatabaseX» . repair_allow_data_loss - это минимальный уровень исправления ошибок, найденных DBCC CHECKDB (DWH_LAND).

Однако полный checkdb успешен:

CHECKDB обнаружил 0 ошибок размещения и 0 ошибок согласованности в базе данных «DatabaseX». Выполнение DBCC завершено. Если DBCC напечатал сообщения об ошибках, обратитесь к системному администратору.


TableX имеет около 200 000 строк и имеет кластеризованный индекс columnstore.
Мы используем следующую версию SQL Server:
Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4.

Должен ли я волноваться?

Ответы:


13

Да, это дефект в SQL Server 2017 до 14 д.е. В SQL Server 2016 была аналогичная проблема с некластеризованными индексами хранилища столбцов .

Это подробно описано в этом видео: ошибка CHECKDB в SQL Server 2017 и индексы ColumnStore

Более переносимое повторение этой проблемы:

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;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.