C#ADO.Net的数据访问跟踪-需要使用探查器检查多个线程之间共享的所有连接

C#ADO.Net的数据访问跟踪-需要使用探查器检查多个线程之间共享的所有连接,c#,.net,performance,ado.net,trace,C#,.net,Performance,Ado.net,Trace,我已尝试使用ETW启用数据访问跟踪,如中所述 为了验证它跟踪事件,我创建了一个简单的控制台应用程序,而不是本文中的MVC应用程序。代码如下,它的目的是抛出,以便我可以验证跟踪工作 var connectionString = "Data Source=local;Trusted_Connection = True; Initial Catalog = Data; Timeout = 2; Max Pool Size = 4"; using (var conn = new SqlConnectio

我已尝试使用ETW启用数据访问跟踪,如中所述

为了验证它跟踪事件,我创建了一个简单的控制台应用程序,而不是本文中的MVC应用程序。代码如下,它的目的是抛出,以便我可以验证跟踪工作

var connectionString = "Data Source=local;Trusted_Connection = True; Initial Catalog = Data; Timeout = 2; Max Pool Size = 4";
using (var conn = new SqlConnection(connectionString))
{
   using (var command = new SqlCommand("SELECT * FROM DATA", conn))
   {
      conn.Open();
      var reader = command.ExecuteReader();
      using (var data = new SqlCommand("SELECT * FROM PEOPLE", conn))
      {
           var reader1 = command.ExecuteReader();
      }
   }
}
我使用的是.Net Framework v4.0.30319。 理想情况下,我希望跟踪线程之间共享的连接对象。任何帮助都将不胜感激


谢谢

TL;DR尝试注册其他.dll/mof对,而不是指南推荐的.dll/mof对

手动注册DLL的步骤(根据MS指南修改)

  • 添加以下注册表项 HKEY\U本地\U机器\软件\ Microsoft\BIDDInterface\Loader

  • 创建一个新的字符串值(注意键中的“:”)并修改它 值名称=“:路径”

    值数据=“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\AdoNetDiag.dll”

  • 使用mofcomp.exe(与windows一起安装)在WMI存储库中注册ETW提供程序 mofcomp.exeC:\Windows\Microsoft.NET\Framework64\v4.0.30319\adonetdiag.mof

要测试:

logman start test -p "System.Data.1" -o test.etl -ets // Start a trace
// Do things with ADO.NET (run your sample)
logman stop test -ets // Stop a started trace
tracerpt.exe test.etl -of CSV -o dump.csv // make it human readable
如果一切正常,您现在应该在同一目录中有一个summary.txt和dump.csv文件,其中填充了跟踪信息。祝你好运


您在这些步骤中注册了哪个
ADONETDIAG.dll
?我遵循了(它们似乎是微软发布的,其他人都使用它们作为指南)并发现它们与一个gotcha一起工作

我发现的一个问题是,您的机器上可能安装了多个
ADONETDIAG.dll
,而且您注册的dll很重要例如,我的机器在以下位置安装了一个

  • C:\Windows\Microsoft.NET\Framework64\v2.0.50727\AdoNetDiag.dll
  • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\AdoNetDiag.dll
  • C:\Windows\Microsoft.NET\Framework\v2.0.50727\AdoNetDiag.dll
  • C:\Windows\Microsoft.NET\Framework\v4.0.30319\AdoNetDiag.dll
我找到的所有步骤都指示您注册
\Framework\v2.0.50727\AdoNetDiag.dll
。当我尝试这样做时,我没有得到任何日志(我的.etl文件捕获1个事件,跟踪开始,并且从不超过8KB)

尝试和错误导致发现
\Framework64\v4.0.30319\AdoNetDiag.dll
适合我。

,使用->收集->提供程序浏览器并添加ADO.net和SQL中的所有内容,单击开始并运行代码。代码运行后,转到perfview并停止日志记录,查找ADO/SQL事件