KB4054398 - CORRECCIÓN: La aserción comercial "Comparación no válida debido a LA NO INTERCALACIÓN" se produce en SQL Server 2014, 2016 y 2017

Se aplica a
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 Standard on Windows SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2016 Service Pack 1 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)

Síntomas

Suponga que tiene una consulta que realiza algunas operaciones de cadena, por ejemplo, concatenar, en columnas CHAR o VARCHAR en Microsoft SQL Server 2014, 2016 y 2017. Tenga en cuenta el siguiente escenario:

  • Concatena columnas con distintas intercalaciones asignadas.
  • Esas intercalaciones son incompatibles entre sí. Por ejemplo, intenta concatenar una columna intercalada como Latin1_General_CI_AI con Latin1_General_BIN.
  • El resultado final de la concatenación se asigna a una intercalación específica (incluida "database_default") como cuestión de la resolución de conflictos de intercalación.

En este escenario, SQL Server puede devolver una aserción comercial que indique "Comparación no válida debido a NINGUNA INTERCALACIÓN", y es posible que reciba algunos mensajes de error similares a los siguientes:

Nota

  • Ubicación: typinfo.cpp:Número Line
    Expresión: false
    SPID: SPID
    Id. del proceso: Id. de proceso
    Descripción: comparación no válida debido a NINGUNA INTERCALACIÓN.

  • Msg 3624, Level 20, State 1, LineNumber
    Se ha producido un error en una comprobación de aserción del sistema. Compruebe el registro de errores SQL Server para obtener más información. Normalmente, un error de aserción se debe a un error de software o a daños en los datos. Para comprobar si hay daños en la base de datos, considere la posibilidad de ejecutar DBCC CHECKDB. Si aceptaste enviar volcados a Microsoft durante la instalación, se enviará un mini volcado a Microsoft. Una actualización puede estar disponible de Microsoft en el Service Pack más reciente o en una revisión del soporte técnico.

  • Msg 596, Level 21, State 1, LineNumber
    No se puede continuar la ejecución porque la sesión está en estado de eliminación.

  • Msg 0, Level 20, State 0, LineNumber

  • Se ha producido un error grave en el comando actual.  Los resultados, si los hay, deben descartarse.

Causa

Durante la fase de optimización de consultas, SQL Server intenta calcular cardinalidades en resultados intermedios de varias fases de la consulta, por ejemplo, la concatenación. Dado que la resolución de conflictos de intercalación tiene lugar en el extremo mismo, el optimizador de consultas puede no ser consciente de ello e intenta realizar el cálculo de la cardinalidad de concatenación en una entrada con intercalación en conflicto.

Resolución

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

Actualización acumulativa 8 para SQL Server 2016 SP1

Actualización acumulativa 4 de SQL Server 2017

Actualización acumulativa 9 para SQL Server 2014 SP2

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 2016

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

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

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Referencias

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