KB4055758 - CORRECCIÓN: Comportamiento incoherente para devolver los espacios en blanco finales al final de los datos CHAR y BINARY en SQL Server

Se aplica a
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

Síntomas

Supongamos que tiene una tabla de Microsoft SQL Server que tiene uno o varios índices integrados. Al realizar una consulta con la tabla, SQL Server puede realizar rellenos de datos incoherentes para las columnas CHAR y BINARY. El comportamiento incoherente para devolver los espacios en blanco finales al final de las columnas de datos CHAR y BINARY depende de las siguientes condiciones:

  • La configuración de la ANSI_PADDING cuando se crean columnas en la tabla SQL Server.
  • La decisión de realizar un análisis de tabla o una búsqueda de índice en las columnas.

Causa

En algunos escenarios, SQL Server puede realizar una optimización que le permita omitir muchas operaciones para una entrega de datos más rápida. El problema se produce porque SQL Server no reconoce que la optimización no se puede aplicar en el escenario anterior.

Más información

Este comportamiento de SQL Server no cumple con el comportamiento documentado en el artículo siguiente: Usar datos Char y Varchar.

Nota

Si ANSI_PADDING está ACTIVADO cuando se crea una columna char NULL, se comporta igual que una columna char NOT NULL: los valores se rellenan con el botón derecho del tamaño de la columna. Si ANSI_PADDING está DESACTIVADO cuando se crea una columna char NULL, se comporta como una columna varchar con ANSI_PADDING establecido OFF: se truncan los espacios en blanco finales.

Resolución

Este problema se ha corregido en las siguientes actualizaciones acumulativas para SQL Server:

Actualización acumulativa 2 de SQL Server 2017

Actualización acumulativa 9 para SQL Server 2016

Actualización acumulativa 6 para SQL Server 2016 SP1

Actualización acumulativa 8 para SQL Server 2014 SP2

Actualización acumulativa 7 para SQL Server 2014 SP1

Acerca de las actualizaciones acumulativas para SQL Server:

Cada nueva actualización acumulativa de SQL Server contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Echa un vistazo a las últimas actualizaciones acumulativas de SQL Server:

Actualización acumulativa más reciente de SQL Server 2017

Actualización acumulativa más reciente de SQL Server 2016

Actualización acumulativa más reciente de SQL Server 2014

Estado

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

Referencias

Obtenga información sobre la terminología que usa Microsoft para describir las actualizaciones de software.