Sintomi
Quando il piano SQL ha l'esecuzione interleaved abilitata 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
Avvertenza Di seguito è riportato un esempio di mancato 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
Informazioni sugli aggiornamenti cumulativi per SQL Server
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutte le correzioni a caldo e di sicurezza presenti nella build precedente. È consigliabile installare la build più recente per la versione di SQL Server:
Aggiornamento cumulativo più recente per SQL Server 2019
Stato
Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.