遇到“SQL Server 无法连接到服务器”时,问题一般出在 SQL Server 数据库引擎 的 服务状态、网络配置、身份验证、防火墙、端口监听 或 客户端连接字符串 上。这类故障的标准错误包括:error 26、error 40、error 10061、error 18456 等。

诊断总原则:先确认 SQL Server 服务 是否在服务器本机正常启动,再测试 远程连接协议、端口、防火墙、登录账户 和 客户端配置。推荐排查顺序为:服务状态 → TCP/IP 协议 → 端口 → 防火墙 → 身份验证 → 连接字符串 → 网络连通性 → 加密证书。
一、检查 SQL Server 服务状态 在目标数据库服务器上按 Win+R 输入 services.msc,找到 SQL Server (MSSQLSERVER) 或 SQL Server (实例名),确认服务状态为“正在运行”。如果服务未启动,右键启动,并将启动类型设为“自动”。如果服务启动后很快停止,请检查 SQL Server 错误日志 和 Windows 事件日志。
二、确认远程连接是否已启用 默认安装的 SQL Server Express 或部分标准版可能未启用远程连接。打开 SQL Server 配置管理器,展开“SQL Server 网络配置”,选择对应实例,检查 TCP/IP 协议是否已启用。Named Pipes 协议也建议启用。TCP/IP 是客户端连接 SQL Server 最常用的协议,禁用后远程连接会直接失败。
三、检查 TCP/IP 端口配置 在 SQL Server 配置管理器 中,右键“TCP/IP”属性,打开“IP 地址”选项卡。找到 IPAll,建议将 TCP 端口 设置为固定端口 1433,并清空动态端口或保持稳定。如果使用 命名实例 且使用动态端口,则依赖 SQL Server Browser 服务 提供端口解析。
四、检查 SQL Server Browser 服务 如果连接字符串使用的是 服务器名\实例名,必须确保 SQL Server Browser 服务正在运行。默认情况下,SQL Server Browser 监听 UDP 1434 端口。如果该服务未启动,客户端无法定位命名实例的端口,会出现 error 26 - 错误定位服务器/实例。
五、检查 Windows 防火墙 在服务器防火墙上,需要允许客户端访问 TCP 1433 端口。如果使用命名实例和动态端口,还需要允许 UDP 1434 端口,或者为 sqlservr.exe 程序创建入站规则。不要简单关闭防火墙,更安全的方法是精确放行 SQL Server 使用的端口。
六、测试网络连通性 在客户端使用命令测试端口是否可达。例如打开命令提示符或 PowerShell,输入 Test-NetConnection 192.168.1.10 -Port 1433。如果返回 TcpTestSucceeded 为 True,说明网络和端口放行正常。也可以使用 telnet 192.168.1.10 1433 测试,但 Windows 默认可能未安装 telnet 客户端。
七、在服务器本机测试连接 在服务器上打开命令提示符,使用 sqlcmd -S localhost -E 测试本机连接。如果本机能连接但远程不能,问题集中在 TCP/IP 未监听外部 IP、防火墙 或 服务器只绑定了 127.0.0.1。在 TCP/IP 属性中,确保服务器监听的 IP 地址包含实际的服务器网卡 IP。
八、检查身份验证模式和登录账户 SQL Server 支持 Windows 身份验证 和 混合模式。如果客户端使用 SQL Server 身份验证,例如 sa 账户,则实例必须先设置为“混合模式”。如果 sa 账户被禁用或密码错误,会报 error 18456。登录失败的具体状态值可以查看 SQL Server ERRORLOG 获得。
九、检查连接字符串 使用 SQL Server Management Studio 连接时,服务器名称不能写错。默认实例可用 服务器IP 或 服务器名 直接连接;命名实例应使用 服务器名\实例名;如果使用指定端口,建议写法为 IP,端口,例如 192.168.1.10,1433。应用程序连接字符串示例为:Server=192.168.1.10,1433;Database=MyDB;User Id=sa;Password=******;Encrypt=False。
十、检查加密与证书问题 新版 Microsoft.Data.SqlClient 默认要求加密连接。如果服务器没有配置有效证书,客户端可能报“证书链不受信任”或“证书验证失败”。测试阶段可临时设置 Encrypt=False 或 TrustServerCertificate=True。生产环境推荐为 SQL Server 配置受信任的 TLS 证书,并启用加密。
十一、查看 SQL Server 错误日志 SQL Server 错误日志位于安装目录下的 Log 文件夹中,例如:C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\ERRORLOG。日志中会记录服务启动、端口监听、登录失败、TCP/IP 连接错误等关键信息。根据错误日志里的 状态号 和 协议名 可以快速定位故障原因。
十二、常见错误代码含义 error 26 表示无法定位服务器或实例,通常是服务未运行、浏览器服务失败、端口未监听或防火墙阻断;error 40 表示无法打开到 SQL Server 的连接,常见于 Named Pipes 或 TCP 路径失败;error 10061 表示端口连接被拒绝,说明客户端能到达服务器但 SQL Server 没有监听该端口;error 18456 表示身份验证失败;error 11001 表示主机名无法解析,属于 DNS 问题。
十三、检查链接服务器场景 如果你遇到的是 SQL Server 链接服务器 无法连接到远程服务器,则还要检查 分布式查询 配置、远程服务器的 允许远程连接、远程登录映射 以及 MSDTC 设置。可以使用 SQL 语句 SELECT * FROM [链接服务器名].[数据库名].[架构名].[表名] 测试具体查询是否成功。
十四、其他可能原因 客户端连接池中存在过期连接时,即使服务器已恢复,应用程序也可能继续报错,可重启应用程序池或执行 SqlConnection.ClearPool。此外,SQL Server 实例名 大小写不敏感,但 主机名 必须能被 DNS 正确解析;服务器IP地址建议使用静态 IP,避免重启后 IP 变化导致连接失败。
十五、最终排查建议 在服务器上使用 netstat -ano | findstr 1433 查看 SQL Server 是否监听端口;在客户端使用 sqlcmd -S tcp:192.168.1.10,1433 -U sa -P 密码 测试真实连接。通过“服务—协议—端口—防火墙—账户—字符串—证书”的顺序逐层排除,绝大多数 SQL Server 无法连接到服务器 的问题都能被定位和解决。

查看详情

查看详情