安装 SQL Server 2019 时,也会同时安装 ODBC 驱动程序,而 MSSQL 似乎对其有很强的依赖性。是否可以重新配置 MSSQL 以使用较新版本的 ODBC 驱动程序并删除旧版本?我们的第三方漏洞管理扫描程序正在标记较旧版本的 ODBC 驱动程序,但似乎没有办法彻底修复这些发现。
截至本文撰写时的详细信息:
- 我正在使用的服务器正在运行 SQL Server 2019 开发人员版本
- 它在 Windows Server 2019 标准版 VM 上运行
- 此 SQL 服务器的版本为 15.0.4405.4 (CU29)
- 在安装 CU29 之前,此服务器位于 CU27
- 安装的 ODBC 版本是 17.10.6.1
- 所有组件都是 x64,而不是 x86
故障排除/分析:
- 从 CU27 更新到 CU29 并未更新 ODBC 驱动程序的版本
- 我可以手动安装较新版本的 ODBC 驱动程序(18.4.1.1),它将与 17.10.6.1 和平共处,但不会清除漏洞
- 如果我删除 17.10.6.1 来清除漏洞,SQL Server Agent 将无法启动(事件查看器:服务未及时响应启动或控制请求)
- 重新安装 ODBC 17.10.6.1 可以解决问题并允许代理启动 - 但漏洞再次出现
- 在安装 v18.x 驱动程序后修复 SQL Server 只会将 ODBC 驱动程序重新安装到较早的主要版本 (17.xxx),这同样不合规,并且仍然会触发我们的漏洞扫描结果
- 目前似乎还没有 ODBC 17 的新版本,因为 MS 似乎没有同时开发和发布 17.x 和 18.x 的新版本。他们似乎在催促我们使用 v18,但它与 SQL 2019 Agent 配合得并不好。
要点:
- 看来 MSSQL 2019 对 SQL 2019 的 ODBC 驱动程序版本 17 有硬依赖性
- CU 似乎尚未更新这些驱动程序 - 如果有的话
- 似乎没有办法通过 SSMS/UI 重新配置/调整 MSSQL 2019 以使用较新的 ODBC 驱动程序主要版本(例如 18.x)
- 我尚未调查过 Windows 系统注册表编辑
- 无论我在实例构建时安装了哪些组件,这些驱动程序都会被安装,因此最小化我的表面积似乎没有帮助(我将此实例与执行了最小安装的另一个 2019 实例进行了比较 - 它们都有相同的 ODBC 驱动程序。)
问题:
- 这里有没有人遇到过同样的问题?我可以采取什么步骤让 MSSQL 看到/使用较新的 ODBC 驱动程序?
- ODBC 驱动程序更新会随 CU 一起推送吗,还是我需要通过官方 MS 下载手动更新它们?
任何建议/指导都值得赞赏。谢谢。
您说得对,根据 SQL Server 的版本,各种组件可能需要不同版本的驱动程序。我写过这篇文章(一般指 AG/FCI,但也适用于代理和内部引擎项目),您可以看到 SQL 2019 确实需要 ODBC 17。
对于您的问题,可以更新主要版本的 ODBC 驱动程序的更新(因为它们会覆盖同一主要版本的早期二进制文件),通常 ODBC 驱动程序有自己的更新。
主要版本之间的更新(例如 OP 从 17 到 18)不允许使用较新的主要版本。在最简单的情况下,这是因为应用程序(例如 Agent)是使用 17 驱动程序硬编码编译的。
如果驱动程序中确实存在漏洞,并且 SQL Server 版本仍受支持,则应该对驱动程序进行更新以解决该问题。请注意,只有被归类为严重漏洞的漏洞才会针对主流支持之外的软件进行解决。