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.