KB5022920 - CORRECCIÓN: Función con valores de tabla que utiliza un parámetro y la cláusula OPTION (OPTIMIZE FOR) da resultados incorrectos en la primera ejecución

Se aplica a
SQL Server 2019 on Linux SQL Server 2019 on Windows

Síntomas

Cuando el plan SQL tiene habilitada la ejecución intercalada y usa la cláusula OPTION (OPTIMIZE FOR), la función con valores de tabla (TVF) que usa un parámetro pasado en la misma instrucción SQL da resultados incorrectos en la primera ejecución.

Resolución

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

Actualización acumulativa 19 para SQL Server 2019

Nota Este es un ejemplo de no usar la ejecución intercalada después de instalar esta actualización acumulativa:

DECLARE @start smalldatetime
SELECT count(*) FROM dbo.GetData(@start)
OPTION (OPTIMIZE FOR (@start = '2022-05-23T06:00:00'))

CREATE FUNCTION [dbo].[GetData]
(
  @start datetime
)
RETURNS TABLE AS RETURN
SELECT t.id FROM dbo.TestTable t
WHERE t.testdate >= @start
GO

CREATE TABLE [dbo].[TestTable](
       [id] [int] IDENTITY(1,1) NOT NULL,
       [testdate] [datetime] NULL
) ON [PRIMARY]
GO

Acerca de las actualizaciones acumulativas para SQL Server

Cada nueva actualización acumulativa para SQL Server contiene todas las revisiones y correcciones de seguridad de la compilación anterior. Se recomienda instalar la compilación más reciente para su versión de SQL Server:

Actualización acumulativa más reciente para SQL Server 2019

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.