Gejala
Ketika paket SQL telah interleaved execution enabled and uses the OPTION (OPTIMIZE FOR) clause, the table-valued function (TVF) that uses a parameter passed in the same SQL statement gives incorrect results on the first run.
Pemecahan Masalah
Masalah ini telah diperbaiki dalam pembaruan kumulatif berikut untuk SQL Server:
Pembaruan Kumulatif 19 untuk SQL Server 2019
Note Berikut adalah contoh tidak menggunakan eksekusi yang saling berhubungan setelah Anda menginstal pembaruan kumulatif ini:
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
Setiap pembaruan kumulatif baru untuk SQL Server berisi semua perbaikan keamanan dan hotfix yang ada di build sebelumnya. Sebaiknya instal build terbaru untuk versi SQL Server Anda:
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".
Referensi
Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.