没有通过 WMI 获得 PerfMon 数据

没有通过 WMI 获得 PerfMon 数据

我正在尝试通过 WMI 获取 \DBServer\SQLServer:Buffer Manager\Page 预期寿命数据。当我通过 perfmon 执行此操作时,我获得了实际数据。但是,当我尝试从以下任一 WMI 类(我认为应该是正确的)中提取此数据时,它始终返回 0:Win32_PerfFormattedData_MSSQLSERVER_SQLServerBufferManager Win32_PerfRawData_MSSQLSERVER_SQLServerBufferManager

使用 WMIExplorer 它在两个 WMI 类的所有列中返回 0。

PerfLog 包含以下数据:“07/08/2010 12:02:53.986”,“4429”
“07/08/2010 12:03:08.989”,“4429”
“07/08/2010 12:03:23.991”,“4429”
“07/08/2010 12:03:38.994”,“4429”
“07/08/2010 12:03:53.996”,“3415”
“07/08/2010 12:04:08.999”,“3415”
“07/08/2010 12:04:24.001”,“3415”

这些数据还会存储在哪里以便我可以通过 WMI 获取它?

答案1

您没有说明要调用 WMI 类的哪个属性。PageLifeExpectancy 属性应具有与 Perfmon 相同的数据。尝试以下 vbscript:

On Error Resume Next

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

strComputer = "SQLSERVER"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_MSSQLSERVER_SQLServerBufferManager", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)

For Each objItem In colItems
    WScript.Echo "Pagelifeexpectancy: " & objItem.Pagelifeexpectancy
Next

(编辑)抱歉,您确实说了所有列都返回零。无论如何,请尝试该脚本,以防万一您要执行其他操作。我已经在 SQL Server 2008 计算机上对其进行了测试,它提供的数据与 Perfmon 相同。

相关内容