连接提示「无法打开服务器(错误 40)」是什么?
SSMS/客户端连接 SQL Server 报「无法打开服务器」类网络错误的含义:TCP 未启用、防火墙拦截、服务未监听,以及逐项排查路径。
简短答案
「无法打开服务器」是网络层连不上引擎的总括提示,不是登录失败(那是 18456 类)。三大嫌疑:引擎没开 TCP 监听、Windows 防火墙拦截了端口、服务压根没跑。排查从近到远:服务 → 协议 → 防火墙。
现象对照
| 现象 | 原因 | 处理 |
|---|---|---|
| 本机 SSMS 连默认实例都失败 | TCP/IP 没启用,只有共享内存 | 启用 TCP/IP 并重启服务 |
| 本机行、远程不行 | 防火墙/路由 | 放行 1433(或实例端口) |
| 所有连接都失败 | 引擎服务没在运行 | 先起服务 |
| 远程命名实例连不上 | 动态端口未通告 | 启动 SQL Browser 或固定端口 |
排查步骤
- 确认服务在跑:
Get-Service MSSQLSERVER(命名实例是MSSQL$实例名)。 - 查网络协议:「SQL Server 配置管理器」→ SQL Server 网络配置 → 把 TCP/IP 启用,默认实例端口确认 1433,重启 SQL Server 服务。
- 防火墙放行入站端口:
New-NetFirewallRule -DisplayName "SQL Server 1433" -Direction Inbound -Protocol TCP -LocalPort 1433 -Action Allow
- 客户端连通性验证:
Test-NetConnection 服务器名 -Port 1433
通了在 SSMS 里实连;仍不通看域名解析与路由。 5. 命名实例远程场景确认 SQL Browser 服务在运行;各版本协议配置位置一致,见 SQL Server 2022 Developer、SQL Server 2019 Developer 条目页。
「无法打开服务器」出现在任何客户端上形态相同,服务端排查优先;客户端 ODBC/驱动问题一般是另一类报错(提供程序缺失类)。
操作小结
- 顺序:服务 → TCP/IP → 防火墙 → 客户端验证。
- 命名实例远程连不上多半是 Browser 没开。
- 每步留证,通到 SSMS 实连成功为止。