ขณะนี้ฉันกำลังสงสัยว่ามีใครสามารถอธิบายปัญหาที่ฉันกำลังประสบอยู่ได้บ้าง
ขณะนี้ฉันกำลังพยายามใช้บทช่วยสอนนี้เพื่อค้นหากระบวนการที่ถูกบล็อกและการหยุดชะงัก
https://www.brentozar.com/archive/2014/03/extended-events-doesnt-hard/#comment-3481472
ฉันทำตามขั้นตอนตามที่กล่าวไว้ในบทช่วยสอน ดังนั้นฉันจึงไม่แน่ใจว่าฉันทำอะไรผิด
หลังจากรวบรวมเหตุการณ์ ฉันเรียกใช้แบบสอบถามนี้:
ด้วย events_cte AS (
เลือก
xevents.event_data
DATEADD(ไมล์,
DATEDIFF(ไมล์ GETUTCDATE() CURRENT_TIMESTAMP)
xevents.event_data.value(
'(event/@timestamp)[1]', 'datetime2')) AS [เวลากิจกรรม] ,
xevents.event_data.value(
'(เหตุการณ์/การกระทำ[@name="client_app_name"]/value)[1]', 'nvarchar(128)')
AS [ชื่อแอปไคลเอ็นต์],
xevents.event_data.value(
'(เหตุการณ์/การกระทำ[@name="client_hostname"]/value)[1]', 'nvarchar(สูงสุด)')
AS [ชื่อโฮสต์ไคลเอ็นต์],
xevents.event_data.value(
'(เหตุการณ์[@name="blocked_process_report"]/data[@name="database_name"]/value)[1]', 'nvarchar(สูงสุด)')
AS [ชื่อฐานข้อมูล],
xevents.event_data.value(
'(เหตุการณ์[@name="blocked_process_report"]/data[@name="database_id"]/value)[1]', 'int')
AS [database_id],
xevents.event_data.value(
'(เหตุการณ์[@name="blocked_process_report"]/data[@name="object_id"]/value)[1]', 'int')
AS [object_id],
xevents.event_data.value(
'(เหตุการณ์[@name="blocked_process_report"]/data[@name="index_id"]/value)[1]', 'int')
AS [index_id],
xevents.event_data.value(
'(เหตุการณ์[@name="blocked_process_report"]/data[@name="duration"]/value)[1]', 'bigint') / 1,000
AS [ระยะเวลา (มิลลิวินาที)],
xevents.event_data.value(
'(เหตุการณ์[@name="blocked_process_report"]/data[@name="lock_mode"]/text)[1]', 'varchar')
AS [โหมดล็อค]
xevents.event_data.value(
'(เหตุการณ์[@name="blocked_process_report"]/data[@name="login_sid"]/value)[1]', 'int')
AS [เข้าสู่ระบบ_sid],
xevents.event_data.query(
'(เหตุการณ์[@name="blocked_process_report"]/data[@name="blocked_process"]/value/blocked-process-report)[1]')
เป็น block_process_report,
xevents.event_data.query(
'(เหตุการณ์/ข้อมูล[@name="xml_report"]/value/deadlock)[1]')
AS การล็อกตาย_กราฟ
จาก sys.fn_xe_file_target_read_file
('C:\temp\XEventSessions\blocked_process*.xel',
'C:\temp\XEventSessions\blocked_process*.xem',
null, null)
ใช้ข้าม (เลือก CAST (event_data AS XML) AS event_data) เป็น xevents
)
เลือก
กรณีที่ block_process_report.value('(blocked-process-report[@monitorLoop])[1]', 'nvarchar(max)') เป็นโมฆะ
จากนั้น 'การหยุดชะงัก'
อื่น ๆ 'กระบวนการที่ถูกบล็อก'
สิ้นสุดเป็นประเภทรายงาน
[เวลากิจกรรม],
กรณี [ชื่อแอปไคลเอ็นต์] เมื่อ '' จากนั้น ' -- ไม่มี -- '
ELSE [ชื่อแอปไคลเอ็นต์]
สิ้นสุดเป็น [แอปไคลเอ็นต์ _name],
กรณี [ชื่อโฮสต์ไคลเอ็นต์] เมื่อ '' จากนั้น ' -- N/A -- '
ELSE [ชื่อโฮสต์ไคลเอ็นต์]
สิ้นสุดเป็น [ชื่อโฮสต์ไคลเอ็นต์],
[ชื่อฐานข้อมูล],
COALESCE(OBJECT_SCHEMA_NAME(object_id, database_id), ' -- N/A -- ') AS [สกีมา],
COALESCE(OBJECT_NAME(object_id, database_id), ' -- N/A -- ') AS [ตาราง],
index_id,
[ระยะเวลา (มิลลิวินาที)],
lock_mode,
COALESCE(SUSER_NAME(login_sid), ' -- N/A -- ') เป็นชื่อผู้ใช้
กรณีที่ block_process_report.value('(blocked-process-report[@monitorLoop])[1]', 'nvarchar(max)') เป็นโมฆะ
จากนั้นการล็อกตาย_กราฟ
อื่น ๆ ถูกบล็อก_กระบวนการ_รายงาน
สิ้นสุดเป็นรายงาน
จาก events_cte
ORDER BY [เวลากิจกรรม] DESC ;
แต่ฉันได้รับผลลัพธ์นี้:
ข่าวสารเกี่ยวกับ 9415 ระดับ 16 สถานะ 1 บรรทัด 1
การแยกวิเคราะห์ XML: บรรทัดที่ 39, อักขระ 109, การตรวจสอบรูปแบบที่ดี: ไม่มี '<' ในค่าแอตทริบิวต์
ความคิดใด ๆ ?