【问题标题】:Query Extended Event from TSQL从 TSQL 查询扩展事件
【发布时间】:2019-11-14 04:48:56
【问题描述】:

我有扩展事件,

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

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

【问题讨论】:

  • 你的意思是,“过滤器就在那里”,你是否在 SSMS 的扩展事件/过滤器菜单中设置了过滤器?
  • 从 UI 我可以过滤日期。但 UI 不断带来所有记录,而不仅仅是当天的记录。
  • 如果您在 SSMS UI 中设置了扩展事件过滤器并且 SSMS 仍然忽略过滤器,您应该联系 MS 支持。它适用于我 - 过滤事件。

标签: sql sql-server tsql


【解决方案1】:

我在这种情况下使用以下命令。如果您使用 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

【讨论】:

    【解决方案2】:
    SELECT event_data = CONVERT(XML, event_data) 
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      相关资源
      最近更新 更多