อาการ
สมมติว่าคุณได้ใช้ Microsoft SQL Server ๒๐๑๒ Service Pack 2 (SP2) บนคอมพิวเตอร์ของคุณ คุณเรียกใช้ cdc.fn_cdc_get_net_changes_<capture_instance>เปลี่ยนแปลงข้อมูลการจับภาพ (cdc) ในกระบวนงานที่เก็บไว้ sp_executesqlและอาจมาจากแหล่งข้อมูลของแอปพลิเคชันเช่น SQL server Management STUDIO server (SSMS), cdc ของตัวเองหรือแพคเกจ sql server รวมบริการ (SSIS) ในสถานการณ์นี้คุณพบประสิทธิภาพการทำงานต่ำใน SQL Server ๒๐๑๒บันทึกย่อ ประสิทธิภาพการทำงานลดลงอาจมีขนาดใหญ่ ตัวอย่างเช่นคิวรีสามารถเสร็จสิ้นในไม่กี่วินาทีใน SQL Server ๒๐๑๒ SP1 อย่างไรก็ตามคิวรีเดียวกันอาจใช้เวลาหลายชั่วโมงในการทำงานใน SQL Server ๒๐๑๒ SP2 นอกจากนี้การอัปเดตสถิติยังไม่ช่วยแก้ไขปัญหา
สาเหตุ
ปัญหานี้เกิดขึ้นเนื่องจากปัญหาในการประเมินจำนวนครั้งที่มีผลต่อประสิทธิภาพการทำงานของแบบสอบถาม >cdc.fn_cdc_get_net_changes_<capture_instanceที่รุนแรง
การแก้ไข
ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตที่สะสมของ SQL Server ครั้งแรก
การอัปเดตที่สะสม3สำหรับ SQL Server ๒๐๑๒ SP2 /en-us/help/3002049
การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ ตรวจสอบการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:
วิธีแก้ไขปัญหาชั่วคราว
เมื่อต้องการแก้ไขปัญหานี้ให้ใช้คำแนะนำคิวรี ตัวเลือก (Recompile) ในคิวรีของคุณ ในกรณีที่คิวรีจะถูกทริกเกอร์จากคอมโพเนนต์ SSIS CDC ตัว เลือก (Recompile) คำแนะนำอาจถูกบังคับโดยการสร้างคำแนะนำแผนตามในตัวอย่างต่อไปนี้:Exec sp_create_plan_guide @name = N'CDC_Query1_PlanGuide', @stmt = N'select [__$start_lsn],[__$operation],[__$update_mask],[Column1],[Column2],[Column3] from [cdc].[fn_cdc_get_net_changes_dbo_Table1](CONVERT(binary(10), @cs, 1), CONVERT(binary(10), @ce, 1), @mode)',@type = N'SQL',@module_or_batch = NULL, @params = N'@ce nvarchar(22),@mode nvarchar(14),@cs nvarchar(22)', @hints = N'OPTION (RECOMPILE)'; บันทึกย่อ คุณจะต้องแทนที่แบบสอบถามตัวอย่างที่มีคิวรีที่คุณกำลังเผชิญกับปัญหา คุณสามารถคว้าจากการติดตามของผู้สร้าง โปรไฟล์ ได้จึงไม่มีอักขระเพิ่มเติมที่ถูกเพิ่มโดยบังเอิญ นอกจากนี้ตรวจสอบให้แน่ใจว่าคิวรีแบบใช้เลือก ถูกใส่ในบรรทัดเดียว (ตัวอย่างเช่นมันไม่ควรมีการส่งกลับค่าขนส่งหรือตัวดึงข้อมูลบรรทัด) เพื่อให้คำแนะนำแผนสามารถทำงานได้สำเร็จ นอกจากนี้คุณยังอาจต้องใช้ FREEPROCCACHE DBCC เพื่อเคาะการวางแผนเก่าจากแคช
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"