Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过.net代码读取扩展事件_.net_Sql Server_Xpath_Extended Events - Fatal编程技术网

如何通过.net代码读取扩展事件

如何通过.net代码读取扩展事件,.net,sql-server,xpath,extended-events,.net,Sql Server,Xpath,Extended Events,我需要记录和读取扩展事件,我确实通过Xpath查询实现了这一点,并且工作正常。某个时候过去了,现在.xel文件的大小增加了,Xpath查询需要很长时间才能返回结果。我听说有.net代码可以帮助更高效地读取.xel文件。请帮助我获取相同的源代码。可以使用任何.NET应用程序(包括PowerShell)以编程方式读取扩展事件数据 下面是一个C#控制台示例,它从包含rpc#u completed事件的跟踪中提取XE数据。这里的构造函数重载指定要处理的XE文件的文件模式。该项目包括对Microsoft.

我需要记录和读取扩展事件,我确实通过Xpath查询实现了这一点,并且工作正常。某个时候过去了,现在.xel文件的大小增加了,Xpath查询需要很长时间才能返回结果。我听说有.net代码可以帮助更高效地读取.xel文件。请帮助我获取相同的源代码。

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

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


我发现,即使使用大型跟踪文件,这种方法也相当快。您可能会考虑使用翻滚文件来限制跟踪文件大小。 可以使用从任何.NET应用程序(包括PowerShell)以编程方式读取扩展事件数据

下面是一个C#控制台示例,它从包含
rpc#u completed
事件的跟踪中提取XE数据。这里的构造函数重载指定要处理的XE文件的文件模式。该项目包括对
Microsoft.SqlServer.XE.Core
Microsoft.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}"
                            );
                    }
                }
            }
        }
    }
}