อาการ
พิจารณาสถานการณ์ต่อไปนี้:
-
คุณใช้ Microsoft SQL Server 2016 Service Pack 2 (SP2) Cumulative Update 2 (CU2) หรือเวอร์ชันที่ใหม่กว่า
-
คุณกําลังเรียกใช้อินสแตนซ์ที่โฮสต์ฐานข้อมูลจํานวนมาก (โดยทั่วไปมากกว่า 200) และอินสแตนซ์เป็นส่วนหนึ่งของ Always On Availability Group (AG) (โดยทั่วไปแล้วจะมีบทบาทของเซิร์ฟเวอร์รอง) หมายเหตุ ฐานข้อมูลผู้ใช้ทั้งหมดไม่จําเป็นต้องเป็นของ AGs
-
คุณเรียกใช้โปรแกรมประยุกต์ Volume Shadow Copy Services (VSS) เพื่อร้องขอการสํารองข้อมูลของฐานข้อมูลทั้งหมดของอินสแตนซ์SQL Server
ในสถานการณ์สมมตินี้ บริการตัวเขียนSQLสามารถเข้าถึงสถานการณ์หยุดชะงัก และเก็บล็อกกับตารางระบบภายในในต้นแบบ (sys.sysdbreg กับ object_id 28) อย่างไม่มีกําหนด นอกจากนี้ การล็อกเหล่านี้จะป้องกันไม่ให้มีการอ่านจาก Dynamic Management View (DMV) ของระบบ เช่น sys.dm_hadr_database_replica_states และอาจนําไปสู่การบล็อกรองที่สําคัญในอินสแตนซ์ นอกจากนี้ คุณสังเกตเห็นว่าการวิเคราะห์บล็อกเชนจะส่งกลับข้อความต่อไปนี้ที่มาจากSQL Server VSS Writer เป็นตัวบล็อกศีรษะ:
"select name, recovery_model_desc, state_desc, CONVERT(integer, is_in_standby), ISNULL(source_database_id,0) จาก master.sys.databases"
จากนั้นSQL ServerจะมีสถานะรอASYNC_NETWORK_IO
หมายเหตุ เนื่องจาก การรอASYNC_NETWORK_IO ถูกนําไปใช้ wait_time เทียบกับการรอดังกล่าวจะไม่เกินสองวินาที (2,000 มิลลิวินาที) อย่างไรก็ตามประเภทการรอจะยังคงอยู่ในสถานที่อย่างไม่มีกําหนดและสถานการณ์นี้จะไม่ยกเลิกการบล็อกด้วยตัวเอง คุณจําเป็นต้องฆ่าSQL Writer Service เพื่อปลดบล็อกสถานการณ์
ในบรรดา SPID ที่ถูกบล็อกโดยตัวบล็อกหัวนี้มักจะมี DBSTARTUP SPID (ทําซ้ํา Alwayson Secondary DB)
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
การแก้ไข
ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตสะสมสําหรับSQL Serverต่อไปนี้:
เกี่ยวกับการอัปเดตสะสมสําหรับSQL Server:
แต่ละปรับปรุงสะสมใหม่สําหรับSQL Serverประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมด และการแก้ไขข้อบกพร่องด้านความปลอดภัยทั้งหมดที่รวมอยู่ในการปรับปรุงสะสมก่อนหน้านี้ ดูการอัปเดตแบบสะสมล่าสุดสําหรับSQL Server:
อ้างอิง
เรียนรู้เกี่ยวกับคําศัพท์ที่ Microsoft ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์