通过 WMI 监控 SQL Server 上每秒的批处理请求

Posted

技术标签:

【中文标题】通过 WMI 监控 SQL Server 上每秒的批处理请求【英文标题】:Monitoring batch requests per second on SQL Server through WMI 【发布时间】:2010-09-29 11:58:07 【问题描述】:

我需要通过 WMI 以编程方式(.NET 3.5、C#)监控 SQL Server 2008 机器。我想测量服务器每秒接收的批处理请求数;这就是 Windows 7 性能监视器工具将在 SQL Server:SQL Statistics 类别 Batch Requests/sec 计数器下向您显示的内容。如果我使用这个工具监控服务器,当服务器空闲时,我观察到基线为零,当我从我的应用程序中进行一些查询时,基线上升到 100 或 200。

现在,当我尝试使用 .NET 中的 WMI 类来获取相同的数据时,我只读取零,无论我使用多少查询访问服务器。根据我在 MSDN 上阅读的内容,一些性能计数器不应该立即检索,但建议使用采样过程。我找不到有关哪些计数器属于此类别的任何信息,即我应该使用采样来测量每秒的批处理请求吗?另外,什么样的采样?我想 Windows 性能监视器工具正在幕后进行一些计算以显示它显示的图表;我想获得类似的结果。有没有人经历过类似的经历并成功解决?谢谢。

【问题讨论】:

【参考方案1】:

是的,这很准确。由您的代码执行与 Perfmon 相同的操作:每秒查询一次性能计数器以获得有意义的值。您将需要一个计时器或(呃)调用 Sleep()。顺便说一句,使用 PerformanceCounter 类是更好的方法,WMI 并不便宜。这也使您可以访问 PerformanceCounter 属性,该属性告诉您它是哪种计数器。没关系,反正你知道你需要计时器。

【讨论】:

以上是关于通过 WMI 监控 SQL Server 上每秒的批处理请求的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个SQL Server DBA学习PowerShell

sql server 2008 注册升级时报错

访问SQL Server WMI对象

安装SQL SERVER 提示WMI服务失败解决方法

j-interop 无法通过 WMI 监控 Win7

安装过SQL Server 2008失败,求解。