KB5022920 – FIX: lentelės reikšmių funkcija, naudojanti parametrą ir sąlygą OPTION (OPTIMIZE FOR), pateikia neteisingus rezultatus pirmą kartą vykdant

Taikoma
SQL Server 2019 on Linux SQL Server 2019 on Windows

Požymiai

Kai SQL plane įgalintas vykdomasis procesas ir naudojama sąlyga OPTION (OPTIMIZE FOR), lentelės reikšmių funkcija (TVF), naudojanti parametrą, perduotą tame pačiame SQL sakinyje, pateikia neteisingus rezultatus pirmojo vykdymo metu.

Sprendimas

Ši problema išspręsta šiame "„SQL Server“" kaupiamajame naujinime:

19 kaupiamasis naujinimas, skirtas „SQL Server“ 2019

Atkreipkite dėmesį Štai pavyzdys, kaip įdiegus šį kaupiamąjį naujinimą nenaudojamas interleaved vykdymas:

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

Apie kaupiamuosius „SQL Server“ naujinimus

Kiekviename naujame kaupiamajame "„SQL Server“" naujinime yra visos ankstesnės versijos karštosios pataisos ir saugos pataisos. Rekomenduojame įdiegti naujausią "„SQL Server“" versijos komponavimo versiją:

Naujausias "„SQL Server“ 2019" kaupiamasis naujinimas

Būsena

„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.

Nuorodos

Sužinokite daugiau apie terminus, kuriuos „„Microsoft““ naudoja apibūdindama programinės įrangos naujinimus.