อาการ
เมื่อแผน 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 เวอร์ชันของคุณ:
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
อ้างอิง
เรียนรู้เกี่ยวกับคําศัพท์ที่ Microsoft ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์