SQL Server错误233本质是连接握手失败,主因包括:TCP/IP协议未启用、服务未重启、连接字符串实例名/端口错误、强制加密开启未配证书、防火墙拦截或已达最大连接数,任一环节缺失均导致报错。
navicat 连接 sql server 报错 233,本质不是 navicat 的问题,而是 sql server 实例拒绝了这次连接尝试。勾选“允许远程连接”只是其中一环,但很多人以为点完就完事,结果还是连不上——因为这个设置本身不生效,除非配套动作全到位。
SQL Server 配置管理器里 TCP/IP 必须启用
“允许远程连接”这个选项在 SSMS 的服务器属性里只是个开关,它不控制网络协议;真正决定能不能从 Navicat(或其他外部工具)连上的,是 TCP/IP 协议是否启用。
- 打开
SQL Server 配置管理器→ 展开“SQL Server 网络配置” → 找到你的实例(如SQL Server (MSSQLSERVER)或SQL Server (SQLEXPRESS))→ 右键TCP/IP→ 选“启用” - 启用后必须重启 SQL Server 服务,否则更改不加载
- 如果只启用了
Named Pipes,Navicat 默认走 TCP,照样报错 233
连接字符串里不能漏掉实例名或端口
Navicat 填写连接信息时,Server 字段不是简单写 localhost 就行。很多失败是因为没匹配上实际监听的地址。
- 默认实例:可填
localhost或127.0.0.1,前提是 SQL Server 监听的是默认端口1433 - 命名实例(如
SQLEXPRESS):必须写成localhost\SQLEXPRESS,不能只写localhost - 非默认端口(如改成了
54321):要写成localhost,54321(注意是英文逗号,不是冒号) - 混合模式下用
sa登录,密码必须完全匹配,且sa账户已启用(is_disabled = 0)
SQL Server 强制加密开启会导致 233 报错
错误信息里如果带 “pre-login handshake” 或 “shared memory provider, error: 0 - 管道的另一端上无任何进程”,大概率是启用了强制加密但客户端没配证书或没加 Encrypt=False。
- 检查路径:
SQL Server 配置管理器 → SQL Server 网络配置 → 协议 → 右键 TCP/IP → 属性 → 标签页‘证书’ → ‘强制加密’是否为“是” - 如果为“是”,而 Navicat 没传证书,又没在连接参数里加
Encrypt=False,就会卡在握手阶段,报 233 - 临时解决:把“强制加密”设为“否”,重启服务;长期方案是让 Navicat 支持 TLS 或配置证书
防火墙和最大连接数也得同步查
哪怕前面全对,也可能被拦在最后一步。
- Windows 防火墙默认会拦截
1433(或你自定义的端口),需手动添加入站规则,协议选TCP,端口填具体数字 - 如果错误日志里出现
user connections相关提示,说明达到了最大连接数上限,要用sp_configure 'user connections', 0改为不限制(0 表示无限制),再RECONFIGURE - 用
sqlcmd -A -d master进去查当前连接数:SELECT COUNT(*) FROM sys.dm_exec_sessions;
真正卡住人的地方,往往不是单点配置错了,而是 TCP/IP 没启、服务没重启、防火墙没放行、连接字符串又写错实例名——四个条件缺一不可。少做一步,Navicat 就稳稳报 233。


















