REVISIÓN: Error de incoherencia metadatos después de cambiar la tabla de particiones y colocar grupos de archivos y los archivos correspondientes

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 3095958
Síntomas
Considere el siguiente escenario:
  • Tiene dos tablas con particiones en Microsoft SQL Server 2014 y las particiones de la primera tabla se asignan a diferentes archivos y grupos de archivos utilizando el mismo esquema de partición y la función.
  • Cambia una de esas particiones a la segunda tabla, y después de truncar la segunda tabla.
  • Quitar archivos y grupos de archivos se asignan a la partición conmutada.
  • Ejecuta una instrucción SELECT en la segunda tabla.
En este escenario, recibirá el siguiente mensaje de error:

Msj 606, nivel 21, estado 1
Incoherencia de metadatos. Id. de grupo de archivosId. de grupo de archivos> especificado para la tablanombre de la tabla> no existe. Ejecute DBCC CHECKDB o CHECKCATALOG.

Cuando se ejecuta DBCC CHECKDB o CHECKTABLE, recibirá el siguiente mensaje de error:

No se puede procesar índiceIndexName> de tablaTableName> porque el grupo de archivos (FileGroup Id.FileGroupNumber>) no es válido.
Solución
El problema se corrigió primero en las siguientes actualizaciones acumulativas de SQL Server: Recomendación: Instale la actualización acumulativa más reciente para SQL Server
Cada nueva actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de la seguridad que se incluyeron en la actualización acumulativa anterior. Recomendamos que se descargue e instalación las actualizaciones acumulativas más recientes para SQL Server:


Nota: Esta corrección sólo evita las repeticiones futuras de este problema. Si ya experimenta este problema, exportar los datos a una base de datos nueva sin cualquier corrupción de metadatos existentes. Para ello, siga estos pasos:
  1. Para determinar si una partición tiene un grupo de archivos no válido, ejecute la siguiente consulta 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. Hacer visible la tabla con los daños de metadatos de nuevo.

    Si la consulta del paso 1 devuelve un resultado, la partición con metadatos dañados le impide ver (seleccionar * desde) las filas de la tabla. Para evitar este problema, quite esa partición incorrecta.

    Nota
    la mala partición debe estar vacía. De lo contrario, los archivos y el grupo de archivos que estaba podrían no se han quitado o eliminado.

    Para ello, mueva esta partición en otra tabla que utiliza el mismo esquema de partición. Esta tabla puede ser una tabla de prueba. Utilice el IdContenedor de la consulta en el paso 1 y lo hace coincidir con la IdPartición desde sys.partitions. (Asegúrese de anotar la número_partición). Utilizar el número_partición para realizar una partición de conmutador ALTER TABLE de la tabla que se puede ver en la tabla ficticia. La tabla ficticia debe tener el mismo conjunto de columnas y utilice el mismo esquema de partición. La consulta para encontrar la partición incoherente sería similar al 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. Copiar los datos de la tabla anteriormente no se puede ver en la nueva base de datos.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 3095958 - Última revisión: 04/11/2016 17:17:00 - Revisión: 2.0

  • kbfix kbqfe kbexpertiseadvanced kbmt kbsurveynew KB3095958 KbMtes
Comentarios