从TSQL查询扩展事件

时间:2019-07-03 13:17:20

标签: sql sql-server tsql

我有类似的扩展活动

CREATE EVENT SESSION [Name] ON SERVER 
ADD EVENT sqlserver.sql_statement_completed(SET collect_statement=(1)
    ACTION(...)
    ......

现在,当我右键单击View Target Data时,它会尝试加载所有内容,即使过滤器也在那里。我只需要查看今天执行的语句即可。今天如何获得Statemnets?

2 个答案:

答案 0 :(得分:0)

SELECT event_data = CONVERT(XML, event_data) 

INTO #t   FROM sys.fn_xe_file_target_read_file(N'system_health * .xel',NULL,NULL,NULL);

答案 1 :(得分:0)

在这种情况下,我使用以下命令。如果使用的版本早于SQL Server 2016,则应更改 DROP TABLE IF EXISTS 语句。

DROP TABLE IF EXISTS #tempapperror
SELECT   
            [timestamp] = (xe_file.xml_data.value('(/event/@timestamp)[1]', '[varchar](100)' ) )
            ,[database_name] = (xe_file.xml_data.value('(/event/action[@name=''database_name'']/value)[1]','[varchar](250)'))
            ,...
            INTO #tempapperror
    FROM    (
                SELECT   [FILE_NAME]
                        ,[XML_DATA] = CONVERT(XML, EVENT_DATA)
                FROM    sys.fn_xe_file_target_read_file('yourfilepath*.xel', NULL, NULL, NULL)
            ) AS xe_file
    WHERE (xe_file.xml_data.value('(/event/@timestamp)[1]', '[varchar](100)' ) )>='2019-07-17T00:00:00.000Z'

SELECT * FROM #tempapperror  ORDER BY 1 DESC