2010-09-29 58 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属性,它告诉你它是什么类型的计数器。无所谓,无论如何你都需要计时器。