Síntomas

Suponga que agrega una columna a una tabla en Microsoft SQL Server 2012 o SQL Server 2014. Cuando el tamaño de la fila está cerca del tamaño máximo permitido, es decir, 8.060 bytes, la operación de adición puede demorar mucho tiempo.

Causa

El problema se produce porque, cuando el tamaño total de la fila está cerca del tamaño máximo permitido de la fila, SQL Server realiza un recorrido completo de la tabla para asegurarse de que al agregar una columna nueva no se infrinja la integridad de los datos. Las versiones anteriores a SQL Server 2012 no realizan esta comprobación y hacen que el lenguaje de definición de datos (DDL) se ejecute más rápido. Sin embargo, este comportamiento provoca el error de las operaciones posteriores, como la actualización o la reducción de filas, si el tamaño de la fila supera el tamaño permitido.

Cada actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de seguridad incluidas en la actualización acumulativa anterior. Consulte las últimas actualizaciones acumulativas para SQL Server:

Más información

  • Puede activar la marca de seguimiento 647 con el parámetro de inicio. Para obtener más información, consulte Opciones de inicio del servicio motor de base de datos.

  • Puede ejecutar la consulta siguiente (reemplace <nombre de la tabla> por el nombre real de la tabla) para probar la tabla concreta antes de la operación en un sistema de producción y planear el efecto de este problema. Si el resultado es mayor que 8.060, la tabla está sujeta a este problema. Además, si ha quitado columnas, tendrá que alterar la tabla con la opción de regeneración. Volver a crear la tabla puede hacer que la consulta devuelva los resultados correctos.

    select  1+1+2 + 2 +  (case  when sum (case when leaf_offset < 0 then 1 else 0 end) > 0 then 2 else 0 end)  +  ( (count (*) + 7)/8 ) + count (case when leaf_offset < 0 then 1 else null end) * 2 +  sum( case when max_length=-1 then 24 else max_length end)  from sys.system_internals_partition_columns   col join sys.partitions par on col.partition_id = par.partition_id  where object_id = object_id ('<table name>')  and  index_id in (0,1) and partition_number =1 
  • Puede considerar Agregar columnas de longitud variable o columnas dispersas cuando la aplicación frecuentemente agregue nuevas columnas a la tabla. Es una operación de solo metadatos incluso si el tamaño total de todas las columnas supera los 8.060 bytes.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos 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?

¿Cómo de satisfecho está con la calidad de la traducción?
¿Qué ha afectado a tu experiencia?

¡Gracias por sus comentarios!

×