没有通过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获取?

你不会说你正在为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机器上进行了testing,并提供了与Perfmon相同的数据。