必须启用tcp/ip协议,因为navicat默认且仅支持tcp/ip通信,不兼容named pipes和shared memory;启用后还需同步配置固定端口、放行防火墙、设置混合认证模式并确保sql server服务重启生效。

Navicat 连接 SQL Server 时为什么必须启用 TCP/IP 协议
因为 Navicat 默认只走 TCP/IP,不支持 Named Pipes 或 Shared Memory 协议。即使 SQL Server 本地运行,Navicat 也把它当“远程客户端”处理——而 Named Pipes 在跨进程或非 Windows 域环境下极易失败,Shared Memory 则被 Navicat 完全忽略。
SQL Server 配置管理器里怎么确认并启用 TCP/IP
打开 SQL Server Configuration Manager → 展开「SQL Server 网络配置」→ 找到你的实例(如 Protocols for SQLEXPRESS)→ 右键 TCP/IP → 若状态是「已禁用」,点「启用」;启用后必须重启对应 SQL Server 服务(如 SQL Server (SQLEXPRESS)),否则不生效。
- 检查是否真启用了:双击
TCP/IP→ 「协议」页签中「已启用」必须为「是」 - 命名实例建议固定端口:在「IP 地址」页签底部的
IPAll区域,清空TCP Dynamic Ports,填入TCP Port(如1433或自定义值) - 若留着
TCP Dynamic Ports有值(如54321),TCP Port必须为空,且必须确保SQL Server Browser服务正在运行(否则 Navicat 无法解析端口)
为什么启用 TCP/IP 后还是连不上
常见卡点不是协议本身,而是配套没跟上:
-
Windows 防火墙拦了目标端口:即使本地连接,防火墙仍可能丢包不报错,只表现为「Connection timeout」;需新建入站规则放行TCP 1433(或你设的其他端口) - Navicat 连接字符串写错格式:用命名实例时别写
localhost\SQLEXPRESS,应写localhost,1433(注意是英文逗号,不是冒号或反斜杠) - SQL Server 服务登录账户权限不足:服务属性中登录身份若设为「此账户」且密码过期,服务会静默停止;推荐改回
NT Service\MSSQL$SQLEXPRESS这类内置账户 - SQL Server 没开混合模式认证:Navicat 不支持 Windows Authentication,必须在服务器属性中勾选「SQL Server 和 Windows 身份验证模式」,并确保
sa或其他 SQL 登录名已启用且有connect sql权限
Navicat 15 及更早版本连 SQL Server 的驱动依赖
这类版本硬依赖 SQL Server Native Client 11.0(即 sqlncli.msi),但系统里若有多个 Native Client(比如 SQL Server 2014 自带的 12.0、ODBC Driver 18),ODBC 管理器可能加载错版本,导致协议协商失败,报错像「客户端协议不支持」或握手超时。
- 先卸载控制面板里所有含
SQL Server Native Client的条目(尤其11.0和12.0) - 再安装官方
sqlncli_x64.msi(x64 系统必须装 x64 版) - 安装完不要重启 Navicat,直接进连接高级设置 →
Driver下拉框手动选SQL Server Native Client 11.0 - 若连的是 SQL Server 2012+ 且启用了强制加密,还需加参数:
;Encrypt=False;TrustServerCertificate=True











