2010-09-29 46 views
3

我需要以編程方式(.NET 3.5,C#)通過WMI監視SQL Server 2008計算機。我想測量服務器正在接收的每秒批處理請求數量;這是Windows 7性能監視器工具將在SQL Server:SQL Statistics類別Batch Requests/sec計數器下向您顯示的內容。如果我使用這個工具監視服務器,那麼當服務器處於空閒狀態時,我會觀察到一個零基線,當我用我的應用程序查詢某些查詢時,它會達到100或200。通過WMI在SQL Server上監視每秒批量請求

現在,當我嘗試使用WMI類在.NET中獲得相同的數據,我只看過零,不管我有多麼擊中查詢服務器。從我在MSDN上讀到的內容來看,一些性能計數器不應該立即檢索,但建議採樣過程。我無法找到關於哪個計數器屬於這個類別的任何信息,即是否應該使用抽樣來測量每秒的批量請求?另外,什麼樣的採樣?我想象Windows性能監視器工具在幕後進行一些計算,以顯示它顯示的圖形;我想獲得類似的結果。任何人都經歷過類似的經歷併成功解決了它?謝謝。

回答

1

是的,這是準確的。由您的代碼來完成Perfmon所做的相同事情:每秒查詢一次性能計數器以獲取有意義的值。您需要一個計時器或(呃)呼叫睡眠()。使用PerformanceCounter類是更好的方法來做到這一點,WMI並不便宜。這也讓你可以訪問PerformanceCounter屬性,它告訴你它是什麼類型的計數器。無所謂,無論如何你都需要計時器。