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 proporciona resultados incorrectos en la primera ejecución.
Solución
Este problema se ha corregido en la siguiente actualización acumulativa de SQL Server:
Actualización acumulativa 19 de 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
Cada nueva actualización acumulativa de SQL Server contiene todas las revisiones y correcciones de seguridad que se encontraban en la compilación anterior. Le recomendamos que instale la compilación más reciente para su versión de SQL Server:
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Referencias
Obtenga información sobre la terminología que usa Microsoft para describir las actualizaciones de software.