Помилка лише фізичного checkdb, але повне завершено успішно


13

Я виконую checkdb з параметром Physical_only, і він не вдається з кількома помилками, як показано нижче:

Msg 8965, рівень 16, стан 1, рядок 1
Помилка таблиці: Ідентифікатор об'єкта 1557580587, ідентифікатор індексу 1, ідентифікатор розділу 72057594088456192, ідентифікатор блоку виділення 72057594177454080 (введіть дані рядка). Позарядковий вузол даних на сторінці (1: 13282192), слот 3, ID тексту 6370769698816 посилається на сторінку (0: 0), слот 0, але його не було помічено при скануванні.
Msg 8965, рівень 16, стан 1, рядок 1
Помилка таблиці: Ідентифікатор об'єкта 1557580587, ідентифікатор індексу 1, ідентифікатор розділу 72057594088456192, ідентифікатор блоку виділення 72057594177454080 (введіть дані рядка). Позарядковий вузол даних на сторінці (1: 13282192), слот 5, ID тексту 6370769764352 посилається на сторінку (0: 0), слот 0, але при скануванні його не було помічено.
CHECKDB знайшов 0 помилок розподілу та 5255 помилок узгодженості у таблиці "TableX" (ідентифікатор об'єкта 1557580587).
CHECKDB знайшов 0 помилок розподілу та 5255 помилок узгодженості у базі даних «База данихX» . repair_allow_data_loss - це мінімальний рівень ремонту помилок, виявлених DBCC CHECKDB (DWH_LAND).

Однак повний checkdb є успішним:

CHECKDB знайшов 0 помилок розподілу та 0 помилок узгодженості у базі даних «База данихX». Виконання DBCC завершено. Якщо DBCC надрукував повідомлення про помилки, зверніться до системного адміністратора.


ТаблицяX має близько 200 000 рядків і має кластерний індекс стовпців.
Ми використовуємо таку версію SQL Server:
Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4

Чи варто хвилюватися?

Відповіді:


13

Так, це дефект у SQL Server 2017 аж до CU14. У 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.