KB3095958: error de incoherencia de metadatos después de cambiar las particiones de tabla y colocar los archivos y grupos de archivos correspondientes

Síntomas

Imagine la siguiente situación:

  • Tiene dos tablas con particiones en Microsoft SQL Server 2014, y las particiones de la primera tabla se asignan a distintos archivos y grupos de archivos con el mismo esquema de partición y función.

  • Cambie una de esas particiones a la segunda tabla y, a continuación, trunque la segunda tabla.

  • Los archivos y grupos de archivos se colocan en la partición conmutada.

  • Ejecuta una instrucción SELECT en la segunda tabla.

En esta situación, aparece este mensaje de error:

Msj 606, nivel 21, estado 1Metadata incoherencia. Identificador de grupo de archivos<identificador de grupo de archivos> especificado para la tabla <nombre de tabla> no existe. Ejecute DBCC CHECKDB o CHECKCATALOG.

Cuando ejecuta DBCC CHECKDB/CHECKTABLE, recibe el siguiente mensaje de error:

No se puede procesar el índice <IndexName> de la tabla <TableName> porque el grupo de archivos (ID. de grupo <FileGroupNumber>) no es válido.

Resolución

El problema se solucionó por primera vez en las siguientes actualizaciones acumulativas de SQL Server:

Cada actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de seguridad incluidas en la actualización acumulativa anterior. Le recomendamos que descargue e instale las últimas actualizaciones acumulativas de SQL Server:

Nota Esta corrección solo evita que se produzcan repeticiones futuras de este problema. Si ya está experimentando este problema, exporte los datos a una base de datos nueva sin dañar los metadatos existentes. Para ello, siga estos pasos:

  1. Para determinar si una partición tiene un grupo de archivos no válido, ejecute la consulta siguiente para ver si devuelve un resultado:

    SELECT * FROM sys.allocation_units AS au WHERE au.data_space_id NOT IN (SELECT data_space_id FROM sys.filegroups)
  2. Vuelva a ver la tabla con los metadatos dañados. Si la consulta del paso 1 devuelve un resultado, la partición con metadatos dañados impide que se vea (seleccione * de) las filas de la tabla. Para solucionar este problema, quite la partición incorrecta.Nota La partición incorrecta debe estar vacía. En caso contrario, los archivos y el grupo de archivos en el que se encontraba no se pudieron quitar ni eliminar. Para ello, mueva esta partición a otra tabla que use el mismo esquema de partición. Esta tabla puede ser simplemente una tabla ficticia. Use el container_id de la consulta en el paso 1 y compararlo con el partition_id de sys. particiones. (Asegúrese de anotar la partition_number). Use el partition_number para realizar una partición de cambio de ALTER TABLE de la tabla que no se puede ver en la tabla ficticia. La tabla de ficticios debe tener el mismo conjunto de columnas y usar el mismo esquema de partición. La consulta para encontrar la partición incoherente puede ser similar a la siguiente:

    SELECT au.container_id, au.data_space_id, p.partition_number FROM sys.partitions AS p JOIN sys.allocation_units AS au ON p.partition_id = au.container_id LEFT JOIN sys.filegroups AS fgs ON fgs.data_space_id = au.data_space_id WHERE object_id = OBJECT_ID('MyTableName') AND fgs.data_space_id IS NULL;
  3. Copie los datos de la tabla que no se podía ver en la nueva base de datos.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×