El checkdb físico solo falla, pero uno completo se completa con éxito


13

Estoy ejecutando checkdb con la opción physical_only y falla con múltiples errores como a continuación:

Mensaje 8965, Nivel 16, Estado 1, Línea 1
Error de tabla: ID de objeto 1557580587, ID de índice 1, ID de partición 72057594088456192, ID de unidad de asignación 72057594177454080 (tipo Datos en fila). El nodo de datos fuera de la fila en la página (1: 13282192), ranura 3, ID de texto 6370769698816 se referencia por página (0: 0), ranura 0, pero no se vio en el escaneo.
Mensaje 8965, Nivel 16, Estado 1, Línea 1
Error de tabla: ID de objeto 1557580587, ID de índice 1, ID de partición 72057594088456192, ID de unidad de asignación 72057594177454080 (tipo Datos en fila). El nodo de datos fuera de la fila en la página (1: 13282192), ranura 5, ID de texto 6370769764352 se referencia por página (0: 0), ranura 0, pero no se vio en el escaneo.
CHECKDB encontró 0 errores de asignación y 5255 errores de consistencia en la tabla 'TableX' (ID de objeto 1557580587).
CHECKDB encontró 0 errores de asignación y 5255 errores de consistencia en la base de datos 'DatabaseX' . repair_allow_data_loss es el nivel mínimo de reparación para los errores encontrados por DBCC CHECKDB (DWH_LAND).

Sin embargo, checkdb completo es exitoso:

CHECKDB encontró 0 errores de asignación y 0 errores de consistencia en la base de datos 'DatabaseX'. Ejecución DBCC completada. Si DBCC imprimió mensajes de error, comuníquese con el administrador del sistema.


TableX tiene alrededor de 200 000 filas y tiene un índice de almacén de columnas agrupado.
Estamos utilizando la siguiente versión de SQL Server:
Microsoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4

¿Debería preocuparme?

Respuestas:


13

Sí, este es un defecto en SQL Server 2017 hasta CU14. Hubo un problema similar con los índices de almacén de columnas no agrupados en SQL Server 2016 .

Se detalla en este video: CHECKDB Bug con SQL Server 2017 y los índices de ColumnStore

Una reproducción más portátil del problema es esta:

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;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.