Symptomer
Når SQL-planen har aktiveret interleaved execution og bruger OPTION-delsætningen (OPTIMIZE FOR), giver den tabelværdibaserede funktion (TVF), der bruger en parameter, der er overført i den samme SQL-sætning, forkerte resultater ved første kørsel.
Løsning
Dette problem er rettet i følgende akkumulerede opdatering til SQL Server:
Samlet opdatering 19 til SQL Server 2019
Bemærk Her er et eksempel på, at interleaved execution ikke bruges, når du har installeret denne samlede opdatering:
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
Hver ny samlet opdatering til SQL Server indeholder alle de hotfixes og sikkerhedsrettelser, der var i det tidligere build. Vi anbefaler, at du installerer det nyeste build til din version af SQL Server:
Status
Microsoft har bekræftet, at problemet findes i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".
Referencer
Få mere at vide om den terminologi, som Microsoft bruger til at beskrive softwareopdateringer.