Симптоми
Когато в SQL плана е разрешено редуващо се изпълнение и се използва клаузата OPTION (OPTIMIZE FOR), табличната функция (TVF), която използва параметър, подаден в същата SQL команда, дава неправилни резултати при първото изпълнение.
Решение
Този проблем е решен в следната кумулативна актуализация за SQL Server:
Сборна актуализация 19 за SQL Server 2019
Забележка Ето пример да не се използва редуващо се изпълнение след инсталиране на тази кумулативна актуализация:
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
За кумулативните актуализации за SQL Server
Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били в предишната компилация. Препоръчваме ви да инсталирате най-новата компилация за вашата версия на SQL Server:
Последна кумулативна актуализация за SQL Server 2019
Състояние
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.
Справки
Научете повече относно терминологията, която Microsoft използва за описване на актуализациите на софтуера.