KB5022920 - FIX: Funzione con valori di tabella che usa un parametro e la clausola OPTION (OPTIMIZE FOR) restituisce risultati non corretti alla prima esecuzione

Si applica a
SQL Server 2019 on Linux SQL Server 2019 on Windows

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.