程序访问 SQL Server 怎么先做连通性检查
程序报「连不上数据库」前的自查顺序:本机服务状态、TCP 可达性、登录层报错区分,三步把网络问题与账号问题分开。
结论先行
程序报「连不上 SQL Server」时先做三步分层自查:服务在不在 → 端口通不通 → 登录成不成。前两步是网络层,第三步才是引擎层;大多数「连不上」其实在前两步就解决了,别一上来就改账号密码。
三步自查(在能访问目标机器的位置执行)
# ① 目标机上确认服务在跑(管理员 PowerShell)
Get-Service mssqlserver | Select-Object Name, Status # 默认实例
# 命名实例服务名形如 MSSQL$INST1,可先列出所有
Get-Service -Name "MSSQL*"
# ② 客户端侧测 TCP 可达性
Test-NetConnection -ComputerName 目标主机 -Port 1433
# ③ 通了再测登录(SSMS 连一次,看错误属于哪类)
报错怎么分层
| 现象 | 层 | 去向 |
|---|---|---|
| 超时 / 无响应 | 网络层 | 查防火墙(TCP 1433、命名实例 UDP 1434)、路由、服务是否监听 |
| 「拒绝连接」 | 网络层 | 端口对但服务没起,回第 ① 步 |
| 登录失败(18xxx 类错误) | 引擎层 | 账号、密码、该登录能否登录该库 |
| 「数据库不存在」 | 引擎层 | 连接串里的 Database 拼写 / 该登录是否有该库映射 |
网络层 vs 引擎层的判定标准就一条:TCP 层通不通。通则查账号,不通则查网络。
客户端侧的常见误判
- 防火墙是双向的:客户端机器自己的出站规则、中间设备的入站规则都可能是堵点,两边都要查。
- 跨网段时还考虑路由与网络ACL,不只是防火墙(见「跨网段连接 SQL Server」相关条目)。
- 域环境内 Windows 认证跨子网时可能报「集成身份验证不受支持」——这是协议限制不是故障(见域连接相关条目)。
先跑通三步再谈其他;SSMS 管理工具条目 是最快的引擎层探测工具。SQL Server 2022 Developer、SQL Server 2019 Developer 条目环境的连接报错口径一致。