Проблемы
Если план 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:
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Сведения о терминологии, которую корпорация Майкрософт использует для описания обновлений программного обеспечения.