如何通过.net代码读取扩展事件
我需要记录和读取扩展事件,我确实通过Xpath查询实现了这一点,并且工作正常。某个时候过去了,现在.xel文件的大小增加了,Xpath查询需要很长时间才能返回结果。我听说有.net代码可以帮助更高效地读取.xel文件。请帮助我获取相同的源代码。可以使用任何.NET应用程序(包括PowerShell)以编程方式读取扩展事件数据 下面是一个C#控制台示例,它从包含如何通过.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.
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}"
);
}
}
}
}
}
}