升级ODBC Driver 13至17/18后SQL Server 2016 Agent无法启动
ODBC驱动升级后SQL Server Agent无法启动的解决办法
问题背景
卸载ODBC Driver 13(版本13.0.1501.5)并安装ODBC Driver 17或18后,SQL Server 2016 (SP2-CU17-GDR,版本13.0.5893.48 X64)的SQL Server Agent服务完全无法启动,SSMS中提示错误:SQL Server Agent 服务无法启动。有关详细信息,请查看 SQL Server 错误日志和 Windows 事件日志。 目标是让SQL Server使用新的ODBC驱动,同时恢复Agent服务正常运行。
核心原因
SQL Server 2016 Agent对ODBC Driver 13存在底层硬依赖,直接卸载该驱动会导致Agent缺失必要的运行组件(如msodbcsql13.dll),即使安装了更高版本的ODBC驱动,Agent的依赖配置未同步更新,从而引发启动失败。
解决步骤
1. 恢复ODBC Driver 13的核心依赖组件
无需重新完整安装ODBC Driver 13,只需提取并恢复关键文件:
- 下载对应版本的ODBC Driver 13安装包(
msodbcsql_13.0.1501.5_x64.msi),执行以下命令提取文件到临时目录:msiexec /a msodbcsql_13.0.1501.5_x64.msi /qb TARGETDIR=C:\temp\ODBC13Extract - 从提取的
C:\temp\ODBC13Extract\Files\sqlncli13_x64路径下,复制msodbcsql13.dll和msodbcsqlr13.rll到C:\Windows\System32目录(64位系统)。
2. 配置SQL Server Agent使用新ODBC驱动
- 修改作业连接配置:打开SSMS,展开
SQL Server Agent→作业,逐个检查作业步骤:- 对使用ODBC连接的步骤,将驱动明确指定为
ODBC Driver 17 for SQL Server或ODBC Driver 18 for SQL Server。
- 对使用ODBC连接的步骤,将驱动明确指定为
- 调整Agent注册表配置:打开注册表编辑器,定位到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\SQLServerAgent(根据你的实例名调整路径),添加或修改字符串值ODBCDriver,设置为ODBC Driver 17 for SQL Server。
3. 验证驱动优先级并重启服务
- 执行PowerShell命令确认已安装的新驱动:
Get-OdbcDriver | Where-Object {$_.Name -match "ODBC Driver 17|ODBC Driver 18"} - 设置默认64位ODBC驱动为目标版本:
Set-OdbcDriver -Name "ODBC Driver 17 for SQL Server" -Platform 64-bit - 重启SQL Server Agent服务,检查是否正常启动。
4. 日志排查剩余问题
若Agent仍无法启动,查看以下日志定位具体错误:
- SQL Server Agent日志:
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log\SQLAGENT.OUT - Windows事件查看器:展开
Windows日志→应用程序,筛选来源为SQLSERVERAGENT的错误事件,根据提示修复对应问题。
内容的提问来源于stack exchange,提问作者user22969918
相关产品推荐
相关产品推荐

