我需要以编程方式(.NET 3.5,C#)通过WMI监视SQL Server 2008计算机。我想测量服务器每秒接收的批处理请求数;这就是Windows 7性能监视器工具将在SQL Server:SQL Statistics
类别Batch Requests/sec
计数器下显示的内容。如果我使用这个工具监视服务器,我会在服务器空闲时观察到零基线,当我用我的应用程序发出一些查询时,它会达到100或200。
现在,当我尝试在.NET中使用WMI类来获取相同的数据时,无论我多少用查询命中服务器,我都只读零。根据我在MSDN上阅读的内容,一些性能计数器不应该立即检索,但建议采样过程。我找不到关于哪个计数器属于这一类的任何信息,即我应该使用抽样来测量每秒的批量请求吗?还有什么样的抽样?我想,Windows性能监视器工具正在幕后进行一些计算,以显示它所显示的图形;我想获得类似的结果。任何人都经历过类似的经历并成功解决了吗?感谢。
答案 0 :(得分:1)
是的,这是准确的。由您的代码执行与Perfmon相同的操作:每秒查询一次性能计数器以获得有意义的值。你需要一个计时器或(呃)调用Sleep()。使用PerformanceCounter类是更好的方法来做到这一点,WMI并不便宜。这也让您可以访问PerformanceCounter属性,该属性告诉您它是什么类型的计数器。无所谓,你知道你还需要计时器。