C# 读取SQL Server跟踪时引发异常

C# 读取SQL Server跟踪时引发异常,c#,sql-server,C#,Sql Server,我正在尝试使用C#通过SQL Server跟踪捕获在自动化测试运行期间执行的查询。当我运行下面的代码时,我得到了异常 “未能将对象初始化为读取器。” 那么在这种情况下,我们能做些什么呢 源代码 class Program { static void Main(string[] args) { using (Impersonation user = new Impersonation("xxx", "xxx","xxx"))

我正在尝试使用C#通过SQL Server跟踪捕获在自动化测试运行期间执行的查询。当我运行下面的代码时,我得到了异常

“未能将对象初始化为读取器。”

那么在这种情况下,我们能做些什么呢

源代码

class Program
    {
        static void Main(string[] args)
        {
            using (Impersonation user = new Impersonation("xxx", "xxx","xxx"))
            {
                ConnectionInfoBase conninfo = new SqlConnectionInfo();
                ((SqlConnectionInfo)conninfo).ServerName = "xxxxx";

                ((SqlConnectionInfo)conninfo).UseIntegratedSecurity = true;

                TraceServer trace = new TraceServer();
                trace.InitializeAsReader(conninfo, @"Standard.tdf");

                for (int count = 0; count < 30; count++)
                {
                    while (trace.Read())
                    {
                        Console.WriteLine(trace["TextData"]);
                    }

                    Thread.Sleep(1000);
                }
            }
        }
    }

为什么不使用扩展事件?您是在尝试配置SqLExpExchange吗?是的,但是程序性地添加到@ Larnu的建议中,考虑使用[<代码> QueRababEclipse数据> /Cux>()来在.NET代码中扩展事件。
SqlTraceException: Failed to get SQL Tools directory path from InstAPI....
This exception was originally thrown at this call stack:
    Microsoft.SqlServer.Management.Trace.TraceUtils.GetSqlToolsBinaryPath(string)
    Microsoft.SqlServer.Management.Trace.TraceUtils.CreateInstance(string, string)
Microsoft.SqlServer.Management.Trace.TraceServer.InitializeAsReader(Microsoft.SqlServer.Management.Common.ConnectionInfoBase, string)