Sintomi
Quando il piano SQL ha abilitato l'esecuzione interleaved e usa la clausola OPTION (OPTIMIZE FOR), la funzione con valori di tabella (TVF) che usa un parametro passato nella stessa istruzione SQL fornisce risultati non corretti alla prima esecuzione.
Risoluzione
Questo problema è stato risolto nel seguente aggiornamento cumulativo per SQL Server:
Aggiornamento cumulativo 19 per SQL Server 2019
Note Ecco un esempio di non utilizzo dell'esecuzione interleaved dopo l'installazione di questo aggiornamento cumulativo:
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
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli aggiornamenti rapidi e le correzioni per la sicurezza inclusi nella build precedente. È consigliabile installare la build più recente per la versione di SQL Server:
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.