Я пытаюсь получить данные о сроке службы \ 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.