ฉันมีปัญหาในการติดตามการบล็อกที่เรากำลังประสบอยู่
รากปิดกั้นสถานะ SPID เป็น 'นอน' cmd คือ 'รอคำสั่ง' และเป็นsqltext
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
เมื่อฉันดูรายงานยอดการทำธุรกรรมตามรายการธุรกรรมที่ถูกบล็อกคำสั่งการบล็อก SQL คือ '-'
ฉันทำการติดตามบน SQL และเมื่อการบล็อคเกิดขึ้นการติดตามรูทการบล็อค SPID แต่มันไม่ได้นำฉันไปทุกที่ คำสั่งร่องรอยสุดท้ายคือเช่นเดียวกับข้างต้นsqltext
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
ฉันได้ตรวจสอบขั้นตอนการจัดเก็บที่เกี่ยวข้องทั้งหมดแล้วฉันสามารถค้นหาเพื่อให้แน่ใจว่าพวกเขามีงบ TRY / CATCH BEGIN TRAN / COMMIT TRAN / ROLLBACK งบ TRAN (เราใช้ขั้นตอนที่เก็บไว้สำหรับทุกสิ่งดังนั้นจึงไม่มีคำสั่งแบบสแตนด์อโลน) ปัญหานี้เพิ่งเริ่มเกิดขึ้นในช่วง 24 ชั่วโมงที่ผ่านมาและไม่มีใครอ้างว่าได้ทำการเปลี่ยนแปลงใด ๆ กับระบบ
การแก้ไข: หนึ่งในขั้นตอนการจัดเก็บที่ใช้บ่อยของเรามีข้อผิดพลาดกับการแทรก (จำนวนคอลัมน์ไม่ตรงกัน) แต่เรายังสับสนกับสิ่งที่เกิดขึ้น
เมื่อดูข้อมูลการติดตามทั้งหมดคำสั่ง EXEC สำหรับโพรซีเดอร์ที่เก็บนี้ถูกแสดงรายการในบางครั้ง แต่ไม่เคยเกิดขึ้นก่อนที่ BLOCK จะเกิดขึ้นบน SPID การบล็อก ดูเหมือนว่าเมื่อมันเริ่มบล็อกการติดตามไม่ได้บันทึกการดำเนินการของมัน (หรือคำสั่งใด ๆ ที่อยู่ในนั้น) อย่างไรก็ตามมีบางครั้งที่ร่องรอยได้บันทึกการดำเนินการและไม่มีการปิดกั้น
รายงานข้อผิดพลาดของโพรซีเดอร์ที่เก็บมาจากผู้ใช้และฉันสามารถค้นหาคำสั่ง EXEC หลายรายการในการติดตามและเรียกใช้ใน SSMS ไม่มีเวลาเมื่อฉันวิ่งพวกเขาพวกเรามีการบล็อคเกิดขึ้นหรือพวกเขาแขวน พวกเขาวิ่งตามที่คาดไว้ (catch catch fired และย้อนกลับธุรกรรมหลังจากข้อผิดพลาด) หลังจากแก้ไขการแก้ไขขั้นตอนการจัดเก็บแล้วเรายังไม่เห็นปัญหาอีก