Microsoft กระจาย Microsoft SQL Server ๒๐๐๘ R2 Service Pack 1 (SP1) เป็นไฟล์ที่สามารถดาวน์โหลดได้หนึ่งไฟล์ เนื่องจากการแก้ไขจะสะสมแต่ละรุ่นใหม่ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการอัปเดตความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตล่าสุดของ SQL Server ๒๐๐๘ R2 Service Pack 1 (SP1) รุ่นก่อนหน้า
อาการ
เมื่อการแจ้งเตือนเงื่อนไขประสิทธิภาพการทำงานของ SQL Server ถูกยกกำลังใน Microsoft SQL Server ๒๐๐๘ R2 คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
Msg ๕๑๒ระดับ16สถานะ1กระบวนการ sp_sqlagent_get_perf_counters บรรทัด40Subquery ส่งกลับค่ามากกว่า1 การทำเช่นนี้ไม่ได้รับอนุญาตเมื่อมีการใช้แบบสอบถามย่อยต่อไปนี้ =! =, <, <=, >, >= หรือเมื่อมีการใช้แบบสอบถามย่อยเป็นนิพจน์
นอกจากนี้ข้อความแสดงข้อผิดพลาดจะถูกบันทึกในแฟ้มบันทึกข้อผิดพลาดของบริษัทตัวแทนของ SQL Server ในสถานการณ์นี้หมายเหตุ นอกจากนี้ปัญหานี้เกิดขึ้นใน Microsoft SQL Server ๒๐๐๘
สาเหตุ
ปัญหานี้เกิดขึ้นเนื่องจากคิวรีย่อยของกระบวนงานที่เก็บไว้ของระบบ msdb.dbo.sp_sqlagent_get_perf_counters คำนวณค่าของตัวนับอย่างไม่ถูกต้อง คิวรีย่อยขาดความสัมพันธ์การรวมภายในสำหรับคอลัมน์ [object_name] ในเงื่อนไขของแบบสอบถามย่อย ดังนั้นแถวหลายแถวจะถูกส่งกลับอย่างไม่ถูกต้องและปัญหาที่กล่าวถึงในส่วน "อาการ" เกิดขึ้นหมายเหตุ กระบวนงานที่เก็บไว้ของระบบ msdb.dbo.sp_sqlagent_get_perf_counters จะทำงานเมื่อการแจ้งเตือนเงื่อนไขประสิทธิภาพการทำงานของ SQL Server ถูกยกกำลัง
การแก้ไข
ข้อมูลโปรแกรมอัปเดตสะสม
แพคเกจโปรแกรมปรับปรุงที่สะสม3สำหรับ SQL Server ๒๐๐๘ R2 SP1
การแก้ไขสำหรับปัญหานี้ถูกนำออกใช้ครั้งแรกในแพคเกจโปรแกรมปรับปรุงที่สะสม3 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการขอรับแพคเกจโปรแกรมปรับปรุงที่สะสมนี้สำหรับ SQL Server ๒๐๐๘ R2 SP1 ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
๒๕๙๑๗๔๘ แพคเกจโปรแกรมปรับปรุงที่สะสม3สำหรับ SQL Server ๒๐๐๘ R2 SP1หมายเหตุ เนื่องจาก builds สะสมการวางจำหน่ายการอัปเดตใหม่แต่ละครั้งจะมีโปรแกรมแก้ไขด่วนทั้งหมดและการอัปเดตความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่วางจำหน่ายก่อนหน้านี้ของ SQL Server ๒๐๐๘ R2 SP1 เราขอแนะนำให้คุณพิจารณานำการอัปเดตล่าสุดที่มีโปรแกรมแก้ไขด่วนนี้มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base:
๒๕๖๗๖๑๖ รุ่นของ SQL Server ๒๐๐๘ R2 รุ่นที่เผยแพร่หลังจากที่มีการเผยแพร่ SQL Server ๒๐๐๘ R2 SP1
วิธีแก้ไขปัญหาชั่วคราว
เมื่อต้องการแก้ไขปัญหานี้ให้อัปเดตข้อมูลแบบสอบถามย่อยของกระบวนงานที่เก็บไว้ของระบบmsdb.dbo.sp_sqlagent_get_perf_counters เมื่อ ต้องการทำ เช่นนี้ให้เพิ่มเงื่อนไขต่อไปนี้ลงในส่วนคำสั่ง where ของแบบสอบถามย่อยสี่รายการที่ใช้ในการคำนวณคอลัมน์ [ค่า] :
(spi1.[object_name] = spi2.[object_name])
หลังจากที่คุณเพิ่มเงื่อนไขแบบสอบถามย่อยจะมีลักษณะดังต่อไปนี้:
SELECT CASE spi2.cntr_value WHEN 0 THEN 1 ELSE spi2.cntr_value ENDFROM sys.dm_os_performance_counters spi2WHERE (spi1.[object_name] = spi2.[object_name])AND (spi1.counter_name + ' ' = SUBSTRING(spi2.counter_name, 1, PATINDEX('% Base%', spi2.counter_name)))AND (spi1.instance_name = spi2.instance_name)AND (spi2.cntr_type = @perfTypeLargeRawBase
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"