![没有通过 WMI 获得 PerfMon 数据](https://linux22.com/image/518305/%E6%B2%A1%E6%9C%89%E9%80%9A%E8%BF%87%20WMI%20%E8%8E%B7%E5%BE%97%20PerfMon%20%E6%95%B0%E6%8D%AE.png)
我正在尝试通过 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 相同。