KB978629 - แก้ไข: ข้อความแสดงข้อผิดพลาดเมื่อคุณใช้เซสชันเหตุการณ์เพิ่มเติมของ system_health เพื่อบันทึกกราฟการชะงักงันใน SQL Server 2008: "ข้อความ 9436: การแจกแจงส่วน XML: บรรทัดที่ 54 อักขระ 12 แท็กสิ้นสุดไม่ตรงกับแท็กเริ่มต้น"

นำไปใช้กับ
SQL Server 2008 R2 Standard SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Developer SQL Server 2008 R2 Workgroup SQL Server 2008 Standard SQL Server 2008 Enterprise SQL Server 2008 Developer SQL Server 2008 Workgroup

Microsoft แจกจ่ายการแก้ไข Microsoft SQL Server 2008 เป็นไฟล์เดียวที่สามารถดาวน์โหลดได้ เนื่องจากการแก้ไขเป็นแบบสะสม การเผยแพร่ใหม่แต่ละรายการจะมีโปรแกรมแก้ไขด่วนและการแก้ไขข้อบกพร่องด้านความปลอดภัยทั้งหมดที่รวมอยู่ในการแก้ไข SQL Server 2008 รุ่นก่อนหน้า

อาการ

ลองพิจารณาสถานการณ์ต่อไปนี้ ในฐานข้อมูล Microsoft SQL Server 2008 เกิดการชะงักงัน จากนั้น คุณจะใช้เซสชันเหตุการณ์เพิ่มเติมของ system_health เพื่อบันทึกกราฟการชะงักงัน ในสถานการณ์นี้ คุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

หมายเหตุ

msg 9436, ระดับ 16, สถานะ 1, บรรทัด 1

การแจกแจง XML: บรรทัดที่ 54 อักขระ 12 แท็กสิ้นสุดไม่ตรงกับแท็กเริ่มต้น

ตัวอย่างเช่น คุณเรียกใช้คิวรีต่อไปนี้เพื่อส่งออกเป้าหมาย buffer_ring จากเซสชัน system_health เมื่อเกิดการชะงักงัน:

select XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') as DeadlockGraph
FROM
(select CAST(target_data as xml) as TargetData
from sys.dm_xe_session_targets st
join sys.dm_xe_sessions s on s.address = st.event_session_address
where name = 'system_health') AS Data
CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent)
where XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report'

ในตัวอย่างนี้ คิวรีจะส่งกลับผลลัพธ์ที่ถูกต้อง

อย่างไรก็ตาม คุณยังสามารถเรียกใช้คิวรีต่อไปนี้เพื่อส่งกราฟการชะงักงันนี้ในรูปแบบ XML ได้:

select cast(XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') as xml) as DeadlockGraph
FROM
(select CAST(target_data as xml) as TargetData
from sys.dm_xe_session_targets st
join sys.dm_xe_sessions s on s.address = st.event_session_address
where name = 'system_health') AS Data
CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent)
where XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report'

ในสถานการณ์นี้ คุณคาดว่าจะเห็นกราฟการชะงักงันในรูปแบบ XML แม้ว่ากราฟการชะงักงันจะแสดงไม่ถูกต้อง คุณยังคงคาดหวังที่จะเห็นเนื้อหา XML ที่ถูกต้องจากรายงาน xml_deadlock_report อย่างไรก็ตาม คุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

หมายเหตุ

msg 9436, ระดับ 16, สถานะ 1, บรรทัด 1
การแจกแจง XML: บรรทัดที่ 54 อักขระ 12 แท็กสิ้นสุดไม่ตรงกับแท็กเริ่มต้น

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจากเส้นทางของโค้ดที่สร้าง XML Schema สําหรับกราฟการชะงักงันข้ามแท็กปิดขององค์ประกอบรายการผู้เสียหาย นอกจากนี้ โค้ดพาธจะเพิ่มแท็กที่ไม่จําเป็นสําหรับองค์ประกอบการชะงักงัน

การแก้ปัญหา

การแก้ไขปัญหานี้เปิดตัวครั้งแรกในการอัปเดตสะสม 6 สําหรับ SQL Server 2008 Service Pack 1 สําหรับข้อมูลเพิ่มเติมเกี่ยวกับแพคเกจโปรแกรมปรับปรุงสะสมนี้ ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

977443 แพคเกจการปรับปรุงสะสม 6 สําหรับ SQL Server 2008 Service Pack 1 หมายเหตุ เนื่องจากรุ่นนี้เป็นแบบสะสม การแก้ไขใหม่แต่ละรุ่นจะมีโปรแกรมแก้ไขด่วนและการแก้ไขความปลอดภัยทั้งหมดที่รวมอยู่ในการแก้ไขของ SQL Server 2008 รุ่นก่อนหน้า เราขอแนะนําให้คุณพิจารณาใช้การแก้ไขล่าสุดที่มีโปรแกรมแก้ไขด่วนนี้ไปใช้ สําหรับข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

970365 รุ่น SQL Server 2008 ที่วางจําหน่ายภายหลัง SQL Server 2008 Service Pack 1
โปรแกรมแก้ไขด่วนของ Microsoft SQL Server 2008 ถูกสร้างขึ้นสําหรับ SQL Server Service Pack เฉพาะ คุณต้องใช้โปรแกรมแก้ไขด่วนของ SQL Server 2008 Service Pack 1 กับการติดตั้ง SQL Server 2008 Service Pack 1 ตามค่าเริ่มต้น โปรแกรมแก้ไขด่วนใดๆ ที่มีอยู่ใน Service Pack ของ SQL Server จะรวมอยู่ใน SQL Server Service Pack รุ่นถัดไป

SQL Server 2008 R2

สิ่งสําคัญ คุณต้องติดตั้งการแก้ไขนี้ถ้าคุณกําลังใช้ SQL Server 2008 R2

การแก้ไขปัญหานี้เผยแพร่ครั้งแรกในการอัปเดตสะสม 1 สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการขอรับแพคเกจโปรแกรมปรับปรุงสะสมสําหรับ SQL Server 2008 R2 นี้ ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

981355 แพคเกจการปรับปรุงสะสม 1 สําหรับ SQL Server 2008 R2Note เนื่องจากรุ่นนี้เป็นแบบสะสม การเผยแพร่การแก้ไขใหม่แต่ละรายการจะมีโปรแกรมแก้ไขด่วนและการแก้ไขความปลอดภัยทั้งหมดที่รวมอยู่ในการแก้ไข SQL Server 2008 R2 รุ่นก่อนหน้า เราขอแนะนําให้คุณพิจารณาใช้การแก้ไขล่าสุดที่มีโปรแกรมแก้ไขด่วนนี้ไปใช้ สําหรับข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

981356 รุ่น SQL Server 2008 R2 ที่วางจําหน่ายภายหลัง SQL Server 2008 R2

สถานะ

Microsoft ได้ยืนยันว่านี่เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ที่แสดงไว้ในส่วน "นำไปใช้กับ"

การอ้างอิง

สําหรับข้อมูลเกี่ยวกับรูปแบบการให้บริการที่เพิ่มขึ้นสําหรับ SQL Server ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

935897 แบบจําลองการให้บริการที่เพื่มขึ้นมีไว้ให้สําหรับทีมงาน SQL Server เพื่อจัดเตรียมโปรแกรมแก้ไขสําหรับปัญหาที่มีการรายงาน

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งชื่อ Schema สําหรับการอัปเดต SQL Server ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

822499 รูปแบบการตั้งชื่อใหม่สําหรับแพคเกจอัปเดตซอฟต์แวร์ Microsoft SQL Server
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคําศัพท์ของการปรับปรุงซอฟต์แวร์ ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

824684 คําอธิบายเกี่ยวกับคําศัพท์มาตรฐานที่ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์ของ Microsoft