SQL Server 2012报错“Class not registered. Looking for object with CLSID”求助
解决SQL Server 2012 "Class not registered. Looking for object with CLSID" 报错问题
我之前也碰到过一模一样的情况,这种好好的突然炸锅的CLSID类未注册错误,基本都和SSMS(SQL Server Management Studio)的组件注册失效、系统更新搞乱了依赖有关。咱们一步步来搞定它:
可能的触发原因
- SSMS里负责查询窗口的核心COM组件,因为系统更新、杀毒软件误删或者注册表损坏,导致注册信息丢了
- 最近装了其他和SQL沾边的工具/软件,不小心覆盖了SSMS的关键依赖组件
- 系统的.NET Framework版本出了问题,毕竟SQL Server 2012的SSMS吃特定版本的.NET
具体解决办法
1. 重新注册SSMS的核心组件
按下Win+R打开运行框,输入对应命令(注意根据你的安装路径调整,默认路径参考下面):
regsvr32 "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\SqlMgmt.dll"
如果是纯64位系统的默认安装路径,用这个:
regsvr32 "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\SqlMgmt.dll"
执行完会弹出注册成功的提示,重启SSMS试试能不能新建查询。
2. 修复SQL Server 2012安装包
- 打开控制面板→程序和功能,找到Microsoft SQL Server 2012
- 右键选更改,在安装向导里点修复
- 跟着向导走完流程,它会自动把损坏、丢失的组件重新装一遍,包括SSMS的相关部分
3. 检查并修复.NET Framework依赖
SQL Server 2012靠.NET Framework 3.5 SP1吃饭,你可以这么操作:
- 打开控制面板→程序和功能→启用或关闭Windows功能,确保**.NET Framework 3.5(包括.NET 2.0和3.0)**是勾选状态
- 要是已经勾选还是不行,下载.NET Framework 3.5 SP1的修复工具,跑一遍修复流程
4. 修复损坏的注册表项(进阶操作)
如果上面的办法都没用,大概率是注册表对应的CLSID项坏了:
- 打开注册表编辑器(win+R输入regedit),找到路径
HKEY_CLASSES_ROOT\CLSID\{你报错里的那个CLSID值} - 找一台能正常用SQL Server 2012的机器,导出对应的注册表项,导入到你的机器里
- 划重点:改注册表前一定要备份,别手抖搞坏系统
临时应急方案
要是急着干活,先拿sqlcmd命令行顶一下:
打开命令提示符,输入:
sqlcmd -S 你的服务器名 -U 用户名 -P 密码
进了命令行环境就能写SQL语句执行了,先解燃眉之急。
内容的提问来源于stack exchange,提问作者kamran Ladhani
相关产品推荐
相关产品推荐

