【问题标题】:How to read extended events through the .net code如何通过 .net 代码读取扩展事件
【发布时间】:2018-11-12 11:57:07
【问题描述】:

我有记录和读取扩展事件的要求,我确实通过 Xpath 查询实现了这一点,并且它按预期工作。一段时间过去了,现在 .xel 文件的大小变大了,Xpath 查询需要很长时间才能返回结果。我听说有 .net 代码有助于更高效地读取 .xel 文件。请帮我提供相同的源代码。

【问题讨论】:

    标签: .net sql-server xpath extended-events


    【解决方案1】:

    可以使用 QuerableXEventData 从任何 .NET 应用程序(包括 PowerShell)以编程方式读取扩展事件数据。

    下面是一个 C# 控制台示例,它从包含 rpc_completed 事件的跟踪中提取 XE 数据。此处的构造函数重载指定要处理的 XE 文件的文件模式。该项目包括对Microsoft.SqlServer.XE.CoreMicrosoft.SqlServer.XEvent.Linq(在我的系统上位于C:\Program Files\Microsoft SQL Server\140\Shared\)的程序集引用。

    using System;
    using Microsoft.SqlServer.XEvent.Linq;
    
    namespace ExtendedEventsExample
    {
        class Program
        {
            static void Main(string[] args)
            {
                var xeFilePathPattern = @"C:\TraceFiles\rpc_completed*.xel";
                using (var events = new QueryableXEventData(xeFilePathPattern))
                {
                    foreach (var xe in events)
                    {
                        if (xe.Name == "rpc_completed")
                        {
                            var xeName = xe.Name;
                            var xeTimestamp = xe.Timestamp;
                            var xeStatementField = (String)xe.Fields["statement"].Value.ToString();
                            var xeDurationField = (UInt64)xe.Fields["duration"].Value;
                            var xeClientAppNameAction = (String)xe.Actions["client_app_name"].Value;
                            Console.WriteLine(
                                $"Name: {xeName}" +
                                $", Timestamp: {xeTimestamp}" +
                                $", Statement: {xeStatementField}" +
                                $", Duration: {xeDurationField}" +
                                $", ClientAppName: {xeClientAppNameAction}"
                                );
                        }
                    }
                }
            }
        }
    }
    

    我发现这种方法相当快,即使对于大型跟踪文件也是如此。您可以考虑使用翻转文件来限制跟踪文件的大小。 Example here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 2012-01-02
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多