Cannot connect to WMI provider--Invalid class [0x80041010]

Advertisement

SQL Server - WMI Error 0x80041010 - Invalid Class

Recently I started experiencing WMI repository corruption that results in inability to open SQL Server Configuration Manager with the following error message:

Cannot connect to WMI provider. You do not have permission or the server is unreachable. Note that you can only manage SQL Server 2005 and later servers with SQL Server Configuration Manager.
Invalid class [0x80041010]

At this point if I browse WMI repository under rootmicrosoftsqlservercomputermanagement11 I see no SQL Server-specific classes. Only system classes exist. To resolve this issue SQL Server WMI provider needs to be reinstalled.

Step 1 - Install classes

Navigate to C:Program Files (x86)Microsoft SQL Server<SQL Server version, for example "100" for SQL Server 10>Shared if you have x64 installation of SQL Server. On x86 machine the path is C:Program FilesMicrosoft SQL Server<SQL Server version, for example "110" for SQL Server 11>Shared. Make sure that file sqlmgmproviderxpsp2up.mof exists. If it doesn't then either you're in the wrong location or your installation is corrupted and only SQL Server setup can fix the problem. However if the file does exist, then resolution is as simple as running command: mofcomp sqlmgmproviderxpsp2up.mof

c:Program FilesMicrosoft SQL Server100Shared>mofcomp sqlmgmproviderxpsp2up.mof

The output will look like below:

Microsoft (R) 32-bit MOF Compiler Version 5.1.2600.2180
Copyright (c) Microsoft Corp. 1997-2001. All rights reserved.
Parsing MOF file: C:Program FilesMicrosoft SQL ServerSharedsqlmgmprovider
xpsp2up.mof
MOF file has been successfully parsed
Storing data in the repository...
Done!

WMI compiler will notify you that repository was successfully updated

Step 2 - Install localization information

After the classes are deployed localization information needs to be installed as well. From the path in the previous step navigate to the sub-folder that reflects the locale of SQL Server installation. For example 1033 (for english-US). Full path is now C:Program Files (x86)Microsoft SQL Server<SQL Server version, for example "110">Shared<locale ID, for example "1033" for english>. When at this path run the following command:

mofcomp sqlmgmprovider.mfl

WMI resopitory should have been updated successfully again.

如果还是没能解决,可能是管理员(administrator)没有 network service的权限,所以 WMI无法打开。 设置的方法很简单,网络上都有:

1 右击“我的电脑”-->“管理”
2 在“本地用户和组”内的Administrators组上双击,出现添加属性对话框。
3 单击“添加”按钮,出现添加用户对话框
4 单击“高级”按钮,再单击“搜索”(或是“立即查找”)按钮。注:此'NT AUTHORITYNETWORK SERVICE'用户为系统内置帐户,无法直接添加。
5 在“搜索结果”内选择“Network Service”用户后,单击“确定”

按照以上的步骤设置之后,进入配置管理器,问题依旧出现……到了这里实在让人郁闷的不行。

这时又看到一个新方法:检查一下 windows下的system32 中是否有framedyn.dll这个系统文件,如果没有到system32 下的wbem文件中拷贝framedyn.dll到system32 目录下。 我进到system32目录找framedyn.dll文件,果然没有找到,再进入system32wbem目录,找framedyn.dll,拷贝到system32目下。再次进入配置管理器,这次终于成功了!!!问题终于解决了!!!这主要是通过Java 或者vc连接数据库遇到的问题。

以上所述三种方法,总是一个在有些人的电脑上可以起作用。我很不幸尝试到第三种方法才解决了问题,也有可能这三个操作在我的电脑上都是需要的。

Similar Posts:

  • Managing SQL Server Services with WMI Provider

    The WMI Provider for Configuration Management provides access to WMI objects in the root\Microsoft\SqlServer\ComputerManagement namespace for SQL Server 2005,and the root\Microsoft\SqlServer\ComputerManagement10 namespace for SQL Server 2008. To list

  • 不能连接至WMI...

    [size=x-small]已解决:无法连接到WMI提供程序.你没有权限或者该服务器无访问···我想用sql server做一个数据库的作业,主要是想用一下asp做个网页.首先需要安装sql server,刚开始以为是件很简单的事,在我的visual studio 2008的安装包里就有sql server 2005 express edition 的安装软件,直接安装就行了,哪知道后来的过程那叫一个艰辛啊-- 先安装sql server 2005(是英文版的),安装过程非常顺利.然后我想进入S

  • VC调用WMI框架

    微软MSDN的一个例子 在vc6下编译测试通过 #include <afx.h> //用到了CString 的 BSTR转ANSI #define _WIN32_DCOM //这个不懂 //vc6的bug.所以没用使用标准stl.. #include <iostream.h> #include <iomanip.h> //using namespace std; //com组件 #include <comdef.h> #include <Wbemidl

  • 审视WMI的结构,COM调用

    ;********************************************************* ;*--==--* Call WMI (COM Inte**ce) Simple example ;*--==--* By G-Spider 2010.10.5 ;*--==--* Web:http://blog.csdn.net/G_Spider ;********************************************************* 充电: 1.用

  • WMI获取系统信息 得到product name

    利用WMI获取系统信息, 一般步骤: 1. 通过调用CoInitialzeEx来初始化COM参数. 2. 通过调用CoInitializeSecurity来初始化COM过程安全. 3. 通过调用CoCreateInstance来实例化. 4. 通过调用IWbemLocator::ConnectServer来获取一个本机root\cimv2命名空间的IWbemServices的指针.(注意在字符串中要写"root\\cimv2",两个\\) 5. 设置IWbemServices代理安全,

  • .Net Visual C#中用WMI编写网络应用程序

    作者:阿虎 WMI是Windows Management Instrumentation的简称,即:视窗管理规范.在Windows 2000或以后的版本中均安装得有,NT4.0则需要安装WMI的核心组件.通过WMI可以获取远程计算机的各种数据信息,控制远程计算机的各种行为,而这就像操作本地机一样方便.简单. 一.WMI简介 WMI从根本上说应该为一种服务,并且对于本地不同的用户,WMI所有的权限也不一样.计算机超级用户可以为计算机中的每一个用户,设定不同的WMI权限.在默认状态下,超级用户拥有W

  • Visual C#中操作WMI的类库简介

    .Net FrameWork SDK对WMI提供了全面的支持,.Net FrameWork SDK为Visual C#能够操作WMI提供了一个专门的命名空间"System.Management".在命名空间"System.Management"中提供了大量用以处理和WMI相关的类.接口和枚举. 命名空间"System.Management"中的成员是非常复杂的,由于篇幅所限完全介绍这些成员是不可能的,也是没有要的.根据我的经验,认为要了解.掌握在

  • WMI技术介绍和应用——执行方法

    在之前的博文中,我们主要介绍了如何使用WMI查询信息和接收事件.本文将介绍WMI的另一种用法--执行方法.(转载请指明出于breaksoftware的csdn博客) 这块的内容在msdn中有详细的介绍,如果想看原版的可以参阅<Example: Calling a Provider Method> 本文将基于<WMI技术介绍和应用--VC开发WMI应用的基本步骤>中介绍的基类CWMI,在继承类中重写Excute函数,实现执行方法的功能. 之所以继承于CWMI,是为了将WMI逻辑中相同

  • 查询WMI信息

    BOOL QueryWMI() { BOOL bRet = FALSE; HRESULT hResult = S_FALSE; BOOL bNeedCoUnInit = FALSE; IWbemLocator* pIWbemLocator = NULL; IWbemServices* pIWbemServices = NULL; IEnumWbemClassObject* pIEnumWbemClassObject = NULL; IWbemClassObject* pIWbemClassObj

  • WMI 例子

    #define _WIN32_DCOM #include <iostream> using namespace std; #include <comdef.h> #include <WbemIdl.h> #pragma comment(lib,"wbemuuid.lib") int main() { HRESULT hr; // initialize com library hr = CoInitializeEx(0, COINIT_MULTITHR

Tags: