none
WMI如何实现远程监控MSSQL2005数据库 RRS feed

  • 问题

  • WMI可以查询到本地的MSSQL2005,如Win32_PerfRawData_MSSQLSERVER_SQLServerDatabases。

    但是远程可以监控其他机器的进程运行情况,如SQL Server,但是查询Win32_PerfRawData_MSSQLSERVER_SQLServerDatabases却没有返回结果。

     

    2011年1月28日 14:12

答案

  • 通过wbemtest.exe查询root\cimv2的枚举类别,是查询不到Win32_PerfRawData_MSSQLSERVER_SQLServerDatabases。

    通过sfc /scsnnow进行修复WMI服务后,则可以查询得到,现在正常了。

    • 已标记为答案 lehua2288 2011年1月29日 10:37
    2011年1月29日 10:37

全部回复

  • Can you get the info on that machine locally? Should work because many sql monitoring tools pull info with wmi.
    2011年1月28日 14:23
  • 程序在数据库服务器(本地)运行,CPU、进程可以查询。

    但是查询Win32_PerfRawData_MSSQLSERVER_SQLServerDatabases还是报错。

    2011年1月29日 3:31
  • Do you have sysadmin rights in sql on that machine? What's the error by the way?
    2011年1月29日 4:51
  • 使用域帐号,该域帐号是administrators权限组。

    在数据库服务上查询Win32_PerfRawData_MSSQLSERVER_SQLServerDatabases。

    返回错误为:无效类别 :Void ThrowWithExtendedInfo(System.Management.ManagementSta。tus)

    2011年1月29日 6:08
  • NoError:无效类别 :   在 System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
       在 System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
       在 WMITest.Monitor.getWQLResult(String strQuery) 位置 E:\UserTest\Test\WMITest\Form1.cs:行号 324

    出错行为foreach (ManagementBaseObject mo in moc)

        public string getWQLResult(string strQuery)
        {
          ManagementObjectCollection moc = mcp.getQueryResult("Select * From " + strQuery);
          string total = "";
          int i = 0;
          try
          {
            foreach (ManagementBaseObject mo in moc)
            {
              foreach (PropertyData p in mo.Properties)
              {
                i++;
                total += p.Name + ":" + p.Value + "\r\n";
              }
            }
          }
          catch(Exception Err)
          {
            ManagementStatus ms = new ManagementStatus();
            
            total += ms.ToString() + ":" + Err.Message + ":" + Err.StackTrace.ToString();
          }
          return total;
        }

    .

     

    2011年1月29日 7:21
  • 通过wbemtest.exe查询root\cimv2的枚举类别,是查询不到Win32_PerfRawData_MSSQLSERVER_SQLServerDatabases。

    通过sfc /scsnnow进行修复WMI服务后,则可以查询得到,现在正常了。

    • 已标记为答案 lehua2288 2011年1月29日 10:37
    2011年1月29日 10:37