KB4046745 - FIX: la instrucción UPDATE falla silenciosamente cuando se hace referencia a una función de partición no existente en la cláusula WHERE en SQL Server 2014, 2016 o 2017

Se aplica a
SQL Server 2014 Service Pack 2 - duplicate (do not use) 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 2017 Developer SQL Server 2017 Enterprise Core SQL Server 2017 Enterprise 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 instrucción UPDATE que hace referencia a una función de partición no existente mediante el uso de la palabra clave $PARTITION en Microsoft SQL Server 2014, 2016 o 2017. Por ejemplo,

Nota

UPDATE TableName SET ColumnName='xyz' WHERE $PARTITION. NonExistingPartitionFunction(ColumnName) = 1

En esta situación, SQL Server no realiza una actualización o devuelve un mensaje de error para indicar que el objeto NonExistingPartitionFunction no existe. Sin embargo, desde el punto de vista del usuario, parece que la instrucción UPDATE se ejecuta correctamente, pero en realidad no.

Causa

Al ejecutar un lote, SQL Server puede realizar la resolución de nombres diferidos (DNR). En este proceso, SQL Server no produce inmediatamente un error cuando encuentra un objeto inexistente y espera que el objeto sea creado por el módulo o lote antes de la ejecución de la instrucción que hace referencia a ese objeto. Para las funciones de partición, SQL Server no controla DNR correctamente.

Más información

Para obtener más información sobre DNR, vea Resolución diferida de nombres.

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.