我在 SQL Server 2019 上有两台服务器,它们随机决定停止 SQL Server Browser 服务。尝试重新启动它时,它会立即自行关闭。使用下面的命令提示符在数据库主机服务器上以控制台模式启动以获取更多反馈,我看到它已成功启动,但到了“未找到已安装的 SQL 引擎实例 - 未在 SSRP 上监听”的地步,这时它又自行关闭了。
C:\Windows\system32>"C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe" -c
SQLBrowser: starting up in console mode
SQLBrowser: starting up SSRP redirection service
SQLBrowser is successfully listening on ::[1434]
SQLBrowser is successfully listening on 0.0.0.0[1434]
SQLBrowser: Found no installed SQL engine instances -- not listening on SSRP.
SQLBrowser: Both SSRP and OLAP redirection services are disabled. Shutting down browser service
我能找到的唯一信息是关于 SSRP 丢失或禁用的注册表项,我已经验证它已正确到位。
HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server\90\SQL Browser\SSRPListener
Key 的值设置为 1。为了验证,我将其设置为 0,此时 SQL Browser 根本不会启动。返回 1 后,它会恢复到原始行为,即成功启动,然后立即关闭。
同时,数据库本身是可以访问的,所以我知道确实安装了 SQL 引擎实例,它们应该是可见/可监听的,而我完全不知道该如何继续。任何一丝想法都会受到赞赏。
编辑以添加屏幕截图,左侧是出现故障的 SQL Server 2019,右侧是仍按预期工作的 SQL Server 2014。
看起来有人或某物损坏了该台/这些机器上的注册表。最好的选择是对机器上的每个实例运行修复。
获取 procmon 或手动检查注册表应该显示 SQL Server 实例键下的注册表查询没有返回任何结果,这就是您收到此消息的原因。
发现问题了。尽管是 64 位操作系统,有 64 位 SQL Server 实例,但 SQL Browser 启动时会在 32 位注册表区域中寻找 InstalledInstances。
通过从 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server 中删除 InstalledInstances,可以修复此问题
然后它正确地从 64 位注册表区域提取了实例名称。实际上,存在一个根本不应该存在的注册表项。