KB5022920 — ИСПРАВЛЕНО: функция с табличным значением, использующая параметр и предложение OPTION (оптимизация для), дает неправильные результаты при первом запуске

Применяется к
SQL Server 2019 on Linux SQL Server 2019 on Windows

Проблема

Если в плане SQL включено чередование выполнения и используется предложение OPTION (ОПТИМИЗАЦИЯ ДЛЯ), функция с табличным значением (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, перечисленных в разделе «Относится к».

Ссылки

Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.