database sql-server – Corrupción de la base de datos: tabla interna de QueryStore

Pregunta:

Esta mañana, se recibió la siguiente alerta por correo electrónico:

FECHA / HORA: 2/28/2018 9:26:42 AM

DESCRIPCIÓN: Error al intentar recuperar la página lógica (1: 3948712) en la base de datos 9. Pertenece a la unidad de asignación 72057594045857792, no a 72059184917512192.

COMENTARIO: (Ninguno)

EJECUCIÓN DEL TRABAJO: Trampa de alerta de SQL Sentry 2.0

Al buscar en el registro de eventos de la réplica secundaria, hay tres apariciones del mismo mensaje:

Fuente spid138

Mensaje Error al intentar recuperar la página lógica (1: 3948712) en la base de datos 9. Pertenece a la unidad de asignación 72057594045857792, no a 72059184917512192.

Ejecutando lo siguiente en la réplica secundaria (grupo de disponibilidad síncrono de 2 nodos):

DBCC TRACEON(3604)
dbcc page (9, 1,3948712,3)
go
DBCC TRACEOff(3604)

Fragmento de los resultados de cualquiera de las réplicas:

Page @0x00000070DAB8C000

m_pageId = (1:3948712)              m_headerVersion = 1               
m_type = 3 m_typeFlagBits = 0x0                m_level = 0            
m_flagBits = 0x8200 m_objId (AllocUnitId.idObj) = 129   m_indexId
(AllocUnitId.idInd) = 256  Metadata: AllocUnitId = 72057594046382080  
Metadata: PartitionId = 72057594040811520                             
Metadata: IndexId = 1 Metadata: ObjectId = 197575742      
m_prevPage = 0:0)                  m_nextPage = (0:0) pminlen = 0                 
m_slotCnt = 2                       m_freeCnt = 1634 m_freeData = 6568
m_reservedCnt = 0                   m_lsn = (46041:1506360:18)
m_xactReserved = 0                  m_xdesId = (0:0)                  
m_ghostRecCnt = 0 m_tornBits = -99702035              DB Frag ID = 1

Ejecutando lo siguiente en la réplica principal:

select OBJECT_NAME (197575742)
plan_persist_plan

Preguntas

  1. ¿Estoy en lo cierto al decir que tengo una corrupción de índice agrupada de la tabla plan_persist_plan que es parte de Query Store?
  2. Es la mejor / única solución para ejecutar lo siguiente:

     ALTER DATABASE MyDatabase SET QUERY_STORE CLEAR;
  3. Si el n. ° 2 es la mejor solución, ¿hay alguna buena forma de conservar los datos en el Almacén de consultas que se eliminarían?

  4. ¿Este tipo de corrupción indica un problema con el subsistema IO?

Otra información

  • Obviamente, tengo QueryStore habilitado, tiene una capacidad de 350 MB, está en modo de lectura y escritura actualmente, intervalo de descarga de 15 minutos, recopilación de estadísticas por hora, modo de captura TODO, limpieza automática basada en tamaño, umbral de consulta obsoleta de 5 días.
  • DB id 9 es una base de datos de usuarios críticos para la empresa
  • Los detalles del error son Error: 605, Severidad: 21, Estado: 3.

He comprobado el registro de eventos del sistema de Windows según las instrucciones . Esto ha producido solo eventos "informativos", sin errores.

DBCC CHECKTABLE ('sys.plan_persist_plan');  

resultados:

DBCC results for 'sys.plan_persist_plan'. There are 12562 rows in 240 pages for object "sys.plan_persist_plan". DBCC execution completed. If DBCC printed error messages, contact your system administrator.

No puedo establecer el comando correcto para reconstruir el índice, lo siguiente no funciona:

ALTER INDEX PK_plan_persist_plan_cidx ON sys.plan_persist_plan REBUILD;

Respuesta:

Como se señaló en mi comentario anterior, tuve un problema de corrupción similar con una tabla interna del almacén de consultas.

Como usted mismo ha sugerido, utilicé ALTER DATABASE MyDatabase SET QUERY_STORE CLEAR; para intentar solucionar el problema y funcionó bien. En SQL Server 2017, Microsoft agregó un procedimiento de reparación que se puede intentar antes de borrar los datos: sp_query_store_consistency_check ( fuente )

Si desea conservar los datos, probablemente el único método sea copiar las tablas; no puedo encontrar a nadie que haya creado un script para eso.

Por lo general, con la corrupción, yo también estaría preocupado por mis discos, pero en este caso sospecho un poco que el problema está en el almacén de consultas.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım