“客户端协议不支持”本质是驱动协商失败,非SQL Server版本弃用,主因是Navicat ODBC驱动与服务端加密策略(如强制TLS 1.2)、认证流程不匹配,需卸载冲突驱动、手动指定SQL Server Native Client 11.0、禁用Named Pipes启用TCP/IP,并在高级连接中添加;Encrypt=False;TrustServerCertificate=True。
“客户端协议不支持”本质是驱动协商失败,不是SQL Server版本真被弃用
这个报错(常伴随 [08001] 或 connection handshake failed)几乎从不意味着 sql server 2012/2008r2 真的不可用。真实原因是 navicat 内置的 odbc 驱动版本与服务端启用的加密策略、tls 版本或认证流程不匹配——尤其当 sql server 启用了强制加密(force encryption)或 tls 1.2 策略后,老版 navicat 会因无法完成 encrypt=true + trustservercertificate=false 的握手而静默降级失败。
Navicat 15 及更早版本必须装 sqlncli.msi,但装了还报错?先卸载冲突驱动
Navicat 15 及之前版本依赖 SQL Server Native Client 11.0(即 sqlncli.msi)。但如果你系统里同时存在 SQL Server 2012/2014 自带的 Native Client 或更高版本(如 18.x),Windows ODBC 管理器会优先加载旧 CLSID,导致 Navicat 实际调用的仍是失效驱动。
- 打开「控制面板 → 程序和功能」,卸载所有含
SQL Server Native Client名称的条目(尤其是11.0和12.0) - 再安装官方
sqlncli_x64.msi(注意:x64 系统必须装 x64 版本,x86 装 x86) - 安装后**不要重启 Navicat**,而是直接在连接配置中手动指定驱动:高级 → Driver → 选择
SQL Server Native Client 11.0
Navicat 16.0.19+ 连 SQL Server 2012 必须加自定义连接参数
即使升级到 Navicat 16 或 17,若未显式配置加密参数,它仍可能尝试强加密握手,而 SQL Server 2012 SP4 默认拒绝无证书的 Encrypt=True 请求。
- 新建连接 → 切换到「高级」选项卡
- 勾选
Use custom connection string - 在已有字符串末尾追加:
;Encrypt=False;TrustServerCertificate=True - 确认身份验证方式为
SQL Server Authentication(Windows Authentication 在 Navicat 中无法代理 SSPI)
⚠️ 注意:Encrypt=False 仅限内网调试;生产环境应升级 SQL Server 并部署有效证书,而非长期禁用加密。
连不上时先绕过 Named Pipes,强制走 TCP/IP
Navicat 默认可能尝试 Named Pipes 协议,但该协议在跨机器或防火墙环境中极易失败,且错误提示常被误读为“协议不支持”。
- 在客户端 Windows 上运行
cliconfig(CMD 中直接输入回车) - 弹出窗口中,**禁用 Named Pipes,启用 TCP/IP**
- 检查 SQL Server 配置管理器 → SQL Server 网络配置 → 启用
TCP/IP,并确认 IPAll 下的TCP Port是明确值(如1433),非0 - 用
telnet your-sql-server-ip 1433测试端口是否通(不通则查防火墙或服务监听状态)
真正卡住的地方往往不是驱动版本,而是 TCP/IP 没启用、端口没开放、或者自定义连接字符串漏了分号——这几个点漏一个,Encrypt=False 就白加。


















