Win32_PerfFormattedData_MSSQLSERVER_* WMI classes missing

Discussion in 'Scripting' started by Calum, Jun 19, 2008.

  1. Calum

    Calum Guest

    I want to use the Win32_PerfFormattedData_MSSQLSERVER_* WMI classes
    but they are missing from my Windows XP machine.

    My environment is:

    Windows XP (x86) SP3 (I had the same problem with SP2)
    SQL Server 2005 (x86) Developer Edition SP2

    wbemtest connected to namespace root\cimv2 enumerating classes
    beginning with win32_perf, shows none of the
    Win32_PerfFormattedData_MSSQLSERVER_* classes exist, all of the
    Win32_PerfRawData_MSSQLSERVER_* classes exist and
    Win32_PerfFormattedData_msftesql_* exist.

    The following didn't fix the problem (I also tried reinstalling SQL
    Server).

    wmiadap /f
    net stop winmgmt
    net start winmgmt

    and

    winmgmt /clearadap
    winmgmt /resyncperf

    After running these commands C:\WINDOWS\system32\wbem\Logs
    \wbemcore.log shows lots of Win32_PerfFormattedData_* and
    Win32_PerfRawData_* classes being registered but none of the
    Win32_PerfRawData_MSSQLSERVER_* classes.

    wmiadap.log
    (Wed Jun 18 11:04:42 2008.1170406) : Constructing the MSSQLSERVER
    performance library wrapper.
    (Wed Jun 18 11:04:42 2008.1170406) :
    CAdapPerfLib::BeginProcessingStatus()...
    (Wed Jun 18 11:04:42 2008.1170421) : ** MSSQLSERVER Library Loaded.
    (Wed Jun 18 11:04:42 2008.1170421) : Worker thread for MSSQLSERVER is
    0xc34
    (Wed Jun 18 11:04:42 2008.1170421) : Open called for MSSQLSERVER
    returned 0
    (Wed Jun 18 11:04:42 2008.1170421) : Collect called for MSSQLSERVER
    returned 0
    (Wed Jun 18 11:04:42 2008.1170421) : Collect called for MSSQLSERVER
    returned 0
    (Wed Jun 18 11:04:42 2008.1170421) : Close called for MSSQLSERVER
    returned 0
    (Wed Jun 18 11:04:42 2008.1170421) : Thread 0xc34 for MSSQLSERVER is
    terminating
    (Wed Jun 18 11:04:42 2008.1170421) :
    CAdapPerfLib::EndProcessingStatus()...
    (Wed Jun 18 11:04:42 2008.1170421) : Destructing the MSSQLSERVER
    performance library wrapper.
    (Wed Jun 18 11:04:42 2008.1170421) : Library for Service MSSQLSERVER
    Freed.
    (Wed Jun 18 11:04:42 2008.1170421) : CPerfLibSchema::Initialize for
    MSSQLSERVER hr 00000000
    (Wed Jun 18 11:04:42 2008.1170437) : GetClassList for MSSQLSERVER hr
    00000000
    (Wed Jun 18 11:04:42 2008.1170453) : m_apMasterClassList[0]->Merge for
    MSSQLSERVER hr 00000000
    (Wed Jun 18 11:04:42 2008.1170453) : GetClassList for MSSQLSERVER hr
    80041001

    The following entries were in the Event Log.

    Source: WinMgmgt
    Event ID: 40
    Description: WMI ADAP was unable to create the object
    Win32_PerfFormattedData_MSSQLSERVER_SQLServerBufferManager for
    Performance Library MSSQLSERVER because error 0x80041002 was returned

    Source: LoadPerf
    Event ID: 1000
    Description: Performance counters for the MSSQLServer (SQL Server
    (MSSQLSERVER)) service were loaded successfully. The Record Data
    contains the new index values assigned to this service.
    0000: 0c 14 00 00 ....

    Source: LoadPerf
    Event ID: 1001
    Description: Performance counters for the MSSQLSERVER (SQL Server
    (MSSQLSERVER)) service were removed successfully. The Record Data
    contains the new values of the system Last Counter and Last Help
    registry entries.
    0000: 8e 30 00 00 8f 30 00 00 Ž0.. 0..
    0008: 17 07 00 00 ....

    The Extensible Counter List tool from the Resource Kit (c:\Program
    Files\Resource Kit\exctrlst.exe) shows that the SQL Server performance
    counter dll is registered and enabled.

    MSSQLSERVER sqlctr90.dll
    [x] Performance Counters Enabled
    DLL Name: sqlctr90.dll
    Open Procedure: OpenSQLPerformanceData1
    Collect Procedure: CollectSQLPerformanceData1
    Close Procedure: CloseSQLPerformanceData1
    Counter ID Range: 12432 to 13060
    Help ID Range: 12433 to 13061

    And sqlctr90.dll exists in c:\windows\system32

    The machine has the following registry settings.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLSERVER
    \Performance

    First Counter 0x3090 (12432)
    Last Counter 0x3304 (13060)

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
    \009\Counter

    ....
    12432
    SQLServer:Buffer Manager
    ....

    Interestingly, the first counter is the SQLServer::Buffer Manager
    which is the class with the 0x80041002 (WBEM_E_NOT_FOUND) error in the
    Event Log for. This may mean the first counter failing is preventing
    the other counters from being loaded (or attempted).

    These queries work fine in SQL Server Management Studio
    select * from sysperfinfo
    select * from sys.dm_os_performance_counters

    And perfmon (and perfmon /wmi) correctly show the SQL Server
    performance counters.

    Does anyone have any idea why the
    Win32_PerfFormattedData_MSSQLSERVER_* WMI classes don't exist on my
    machine, or how to fix this problem.
     
    Calum, Jun 19, 2008
    #1
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.