Sintomas
Quando o plano SQL tem a execução intercalada habilitada e usa a cláusula OPTION (OPTIMIZE FOR), a TVF (função com valor de tabela) que usa um parâmetro passado na mesma instrução SQL fornece resultados incorretos na primeira execução.
Resolução
Esse problema é corrigido na seguinte atualização cumulativa para SQL Server:
Atualização cumulativa 19 para SQL Server 2019
Observação Aqui está um exemplo de não usar a execução intercalada depois de instalar esta atualização cumulativa:
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 nova atualização cumulativa para SQL Server contém todos os hotfixes e correções de segurança que estavam no build anterior. Recomendamos instalar o build mais recente para sua versão do SQL Server:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.