Назад | Перейти на главную страницу

Нет данных PerfMon через WMI

Я пытаюсь получить данные о сроке службы \ DBServer \ SQLServer: Buffer Manager \ Page через WMI. Когда я делаю это через perfmon, я получаю реальные данные. Однако, когда я пытаюсь вытащить это из любого из этих классов WMI (что, по моему мнению, должно быть правильным), он всегда возвращает 0: Win32_PerfFormattedData_MSSQLSERVER_SQLServerBufferManager Win32_PerfRawData_MSSQLSERVER_SQLServerBufferManager

Используя WMIExplorer, он возвращает 0 во всех столбцах обоих классов WMI.

В 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»
«08.07.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, и он дает те же данные, что и Perfmon.