Sintomas
Quando o plano SQL tem a execução intercalada ativada e utiliza a cláusula OPÇÃO (OTIMIZAR PARA), a função de valor de tabela (TVF) que utiliza um parâmetro transmitido na mesma instrução SQL apresenta resultados incorretos na primeira execução.
Resolução
Este problema foi corrigido na seguinte atualização cumulativa para SQL Server:
Atualização Cumulativa 19 para SQL Server 2019
Note Eis um exemplo de não utilizar 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 todas as correções e correções de segurança que estavam na compilação anterior. Recomendamos que instale a compilação mais recente para a sua versão do SQL Server:
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Referências
Saiba mais sobre a terminologia que a Microsoft utiliza para descrever as atualizações de software.