![通过注册表卸载单个服务器实例](https://linux22.com/image/731813/%E9%80%9A%E8%BF%87%E6%B3%A8%E5%86%8C%E8%A1%A8%E5%8D%B8%E8%BD%BD%E5%8D%95%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%9E%E4%BE%8B.png)
我正在运行 SQL Server 2014,并且有 50 个独立实例正在运行。这是此版本的最大实例数限制,我显然需要卸载一些实例并进行清理。
然而,经过研究,似乎存在一个错误,当您安装了 50 个实例时,它不允许您通过“程序和功能”安装程序或命令行卸载实例。安装程序在查询实例列表时冻结或挂起,并且永远不会继续卸载。我检查了引导日志文件,导出的错误表明它无法执行该操作,因为实例太多,而这才是整个问题所在!
我发现的唯一解决方案是通过注册表卸载实例。我能够使用 msiexec 从 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 中删除实例,但当我这样做时,SQL Browser 服务崩溃了,其他 sql 实例丢失了连接,旧实例的服务会重新出现。我最终从我制作的备份中恢复了注册表。有没有办法正确地从注册表中删除实例并重新定位浏览器服务?也许我遗漏了一些注册表项?
答案1
我已经根据操作顺序找到了解决方案。这解决了我的问题。
-停止 SQL 浏览器服务
-SC 删除特定错误实例的 SQL Server 服务
-使用安装程序磁盘 Setup.exe /Action=Uninstall /FEATURES=SQLEngine /INSTANCENAME=MyInstance /Q 从 setup.exe 运行卸载命令
-(错误实例的 SQL Server Agent 服务将会消失)
-启动 SQL 浏览器服务
-通过程序和功能卸载后续错误实例,因为这现在可以完成而不会挂起。
答案2
根据https://www.experts-exchange.com/questions/29025272/Manually-uninstalling-SQL-Server-Instances.html,这应该可行。
扫描注册表以查找实例名称并找到卸载程序的 MSI 文件。运行 msiexec /x "{id}",这样就可以卸载,托管安装程序不会发出任何抱怨。然后必须使用“sc delete ...”手动清理服务。