如果SQL查询语句中出现一些字符串,我该如何检查SQL Server扩展事件?
例如:我想每天从12:00到15:00查找包含字符串ord_id=4
的所有查询。
如何通过扩展事件跟踪此事?
谢谢, 辖
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用此查询来读取扩展事件
SELECT CONVERT(XML, event_data) XMLEventData FROM sys.fn_xe_file_target_read_file(N'PathForTheFile\*.xel', NULL, NULL, NULL)
如果你写*这意味着阅读所有文件,如果你知道在哪里看你可以写你的文件名而不是*
在此之后,为了方便眼睛使用下面的查询,您需要根据需要修改查询。
SELECT
xexml.value('(./action[@name="username"]/value)[1]', 'varchar(400)') as UserName
,xexml.value('(./action[@name="client_hostname"]/value)[1]', 'varchar(400)') as Client_Hostname
,xexml.value('(./action[@name="collect_system_time"]/value)[1]', 'datetime') as ProcessTime
,xexml.value('(./data[@name="statement"]/value)[1]', 'nvarchar(4000)') as SQLStatement
FROM
(
SELECT CONVERT(XML, event_data) XMLEventData FROM sys.fn_xe_file_target_read_file(N'PathOfYourFiles\*.xel', NULL, NULL, NULL) f
) AS EventTable
CROSS APPLY XMLEventData.nodes('/event') n (xexml)
WHERE cast(xexml.value('(./action[@name="collect_system_time"]/value)[1]', 'datetime')as time) between '12:00:00' and '15:00:00'
AND xexml.value('(./data[@name="statement"]/value)[1]', 'nvarchar(4000)') like '%ord_id=4%'