首页 > 解决方案 > 读取 SQL Server 跟踪时引发异常

问题描述

我正在尝试使用 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);
                }
            }
        }
    }

内部异常

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)

标签: c#sql-server

解决方案


推荐阅读