SQL SERVER-Extendevent捕获堵塞

 

 

CREATE EVENT SESSION [Block_Watch] ON SERVER 
ADD EVENT sqlserver.blocked_process_report(
    ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_name,sqlserver.nt_username,sqlserver.sql_text,sqlserver.username))
ADD TARGET package0.event_file(SET filename=N'D:\XEvent\Block_Watch.xel')
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON)
GO

 

--解析xel数据
select 
    SWITCHOFFSET(n.value('@timestamp','Datetime'),'+08:00') as EventTime,
    n.value('(data[@name="duration"]/value)[1]', 'int') as duration,
    n.value('(data[@name="statement"]/value)[1]', 'nvarchar(max)') as statement,
    n.value('(action[@name="database_name"]/value)[1]', 'nvarchar(128)') as database_name,
    n.value('(action[@name="client_app_name"]/value)[1]', 'nvarchar(128)') as client_app_name,
    n.value('(action[@name="username"]/value)[1]', 'nvarchar(128)') as username,
    n.value('(action[@name="client_hostname"]/value)[1]', 'nvarchar(128)') as client_hostname
from (select cast(event_data as XML) as event_data
from sys.fn_xe_file_target_read_file('D:\XEvent\EE_SlowQueryLog_0*.xel', null, null, null)) ed
cross apply ed.event_data.nodes('event') as q(n)

 

 

--设置阀值,超过这阀值系统才会捕获,以下设置为5S


sp_configure 'show advanced options', 1 ; GO RECONFIGURE ; GO sp_configure 'blocked process threshold', 5 ; GO RECONFIGURE ; GO
posted @ 2019-06-19 11:35  JinweiChang  阅读(314)  评论(0编辑  收藏  举报