2017-09-08 36 views
0

我試圖使用ETW啓用數據訪問跟蹤,如this article中所述。針對ADO.Net的C#數據訪問跟蹤 - 需要執行分析器檢查多線程之間共享的連接是什麼

要驗證它是否跟蹤事件,我創建了一個簡單的控制檯應用程序,而不是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。 理想情況下,我想跟蹤線程之間共享的連接對象。任何幫助將非常感激!

感謝

+0

[註冊的MOF](https://msdn.microsoft.com/en-us/library/cc765421.aspx),用[Perview](https://stackoverflow.com/a/46022660/1466046) - > Collect-> provider-browser並添加ADO.net和SQL的所有內容,點擊開始並運行你的代碼。在代碼運行後,轉到perfview並停止日誌記錄並查找ADO/SQL事件 – magicandre1981

回答

0

TL; DR嘗試註冊其他的.dll/MOF對而不是在導遊推薦的一個。

手動註冊DLL的步驟

  • (從this MS導經修飾的)添加以下注冊表項

    HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\ BidInterface \裝載機

  • 創建一個新的字符串值(注意鍵中的':')和修改...

    值名稱 = 「:路徑」

    值數據 = 「C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ AdoNetDiag.dll」

  • 使用mofcomp.exe註冊ETW提供程序(使用Windows安裝)

    mofcomp.exe C:\ 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你註冊了那些步驟?我遵循these(他們似乎是微軟公佈的,其他人用它們作爲指南),並發現它們只能用於一個問題。

我發現的一個問題是,您的機器上可能安裝了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 \框架\ V2.0.50727 \ AdoNetDiag.dll
  • C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ AdoNetDiag.dll

所有的步驟,我直接找到你於r例如\Framework\v2.0.50727\AdoNetDiag.dll。當我嘗試這個時,我沒有得到任何日誌(我的.etl文件捕獲1事件,跟蹤開始,並且永遠不會超過8KB)。

試驗和錯誤導致發現\Framework64\v4.0.30319\AdoNetDiag.dll爲我工作。

相關問題