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.