REVISIÓN: Se pueden eliminar datos de la columna cuando actualice otra columna de longitud variable en una tabla de una base de datos actualizado desde SQL Server 2005

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): 3120595
Síntomas
Cuando se actualiza un valor en una columna de longitud variable en una tabla de una base de datos se ha actualizado desde Microsoft SQL Server 2005, se eliminan los datos de otra columna de longitud variable en la misma fila.

Este problema se produce en 2014 de Microsoft SQL Server y Microsoft SQL Server 2012. El siguiente escenario puede exponer una base de datos a este problema. Esta lista representa una secuencia de eventos:

  • Se crea una base de datos en SQL Server 2005.
  • En SQL Server 2005, alterar una tabla y, a continuación, coloque una o más columnas de longitud variable al final de la definición de tabla.
  • Agregar nuevas columnas de longitud variable que tienen un tipo de datos y longitud de las columnas perdidas similares.
  • La base de datos se actualiza de SQL Server 2005 a 2014 de SQL Server o SQL Server 2012.
  • Más adelante se actualiza el valor de otra columna de longitud variable y los datos actualizados se desborde a una nueva página.
En este escenario, pueden eliminarse los datos en uno o más de las columnas de la misma fila recién agregadas.

Puede utilizar la secuencia de comandos en el Más información sección para verificar lo siguiente:

  • Si las tablas de una base de datos han eliminado columnas de longitud variable
  • Si se han creado otras columnas de longitud variable que tengan el mismo desplazamientos
Nota: Este problema no se descubre por parte de DBCC CHECKDB.
Solución
Nota: Esta revisión sólo impide que las repeticiones futuras del problema.

Importante: Si está actualizando la base de datos de SQL Server 2005 a 2014 de SQL Server o SQL Server 2012, asegúrese de consultar la sección "Solución".

Este problema se corrigió primero en la siguiente actualización acumulativa para SQL Server:

Estas son las más recientes actualizaciones acumulativas para estas versiones de programa.

Recomendación: Instale la actualización acumulativa más reciente para SQL Server 2014 o SQL Server 2012

Instale la actualización acumulativa cada nueva de SQL Server contiene todas las revisiones y todas las revisiones de la seguridad que se incluyeron en la actualización acumulativa anterior. Consulte las actualizaciones acumulativas más recientes para SQL Server:



Nota: Para obtener más información acerca de las últimas versiones de SQL Server, consulte Dónde encontrar información acerca de la más reciente de SQL Server genera.
Solución
Importante: Aplique esta solución al actualizar la base de datos de SQL Server 2005 a 2014 de SQL Server o SQL Server 2012 y antes de permitir instrucciones UPDATE a ejecutarse en la base de datos actualizada.

Para evitar este problema si se quitarán las columnas de una tabla, asegúrese de que realiza alguna de las siguientes antes de actualizar o eliminar filas:

  • Volver a generar el índice agrupado utilizando ALTER INDEX (...) RECONSTRUIR
  • Reconstruir el montón mediante ALTER TABLE (...) RECONSTRUIR

Más información
Puede utilizar la siguiente secuencia de comandos para comprobar si las tablas de una base de datos han eliminado columnas potencialmente afectados por este problema.

Nota: Si la secuencia de comandos no devuelve ninguna fila, lo que significa que este problema no se aplica actualmente a ninguna tabla en el sistema.
SELECT DISTINCT OBJECT_NAME(sp.[object_id]) AS TableWithDroppedColsFROM sys.system_internals_partition_columns sipc1 WITH (NOLOCK)INNER JOIN sys.system_internals_partition_columns sipc2 WITH (NOLOCK)       ON sipc1.[partition_id] = sipc2.[partition_id] AND              sipc1.leaf_offset = sipc2.leaf_offset AND              sipc1.leaf_offset < 0 AND               sipc1.is_dropped < sipc2.is_droppedINNER JOIN sys.partitions sp WITH (NOLOCK) ON sipc1.[partition_id] = sp.[partition_id];

Importante: Esta secuencia de comandos debe utilizarse solamente para el propósito y el ámbito de este artículo.
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: 3120595 - Última revisión: 05/31/2016 09:05:00 - Revisión: 13.0

Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3120595 KbMtes
Comentarios