SQL远程连接失败,排查顺序不要反:先确认TCP/IP协议和1433端口监听,再检查云服务器安全组与Windows防火墙,最后检查身份验证模式和账号权限,多数情况下,端口不通或安全组漏放行占了大头。
先定位故障层:端口通不通是分水岭
很多人在配置SQL Server远程连接时,一上来就改账号、改密码、重装数据库,结果问题出在网络层,SQL远程连接失败大致分三层:网络端口层、服务协议层、身份认证层,先判断你卡在哪一层,后续操作才不瞎忙。
- 网络端口层:1433端口在服务器本机不能监听,或者外部机器无法访问
- 服务协议层:TCP/IP协议未启用,SQL Server只接受本机共享内存连接
- 身份认证层:端口通了,但登录账号被拒,提示18456、18470等错误
sql server远程连接不上怎么办?先看SQL Server服务是否在监听1433
不管你是本地虚拟机、物理服务器还是简米云、酷番云上的Windows实例,这个检查顺序都适用。
打开SQL Server配置管理器,不同版本入口名称略有差异:
- SQL Server 2016及以上:开始菜单搜索
SQLServerManager15.msc或SQLServerManager16.msc - SQL Server 2014:
SQLServerManager12.msc - SQL Server 2008/2008 R2:
SQLServerManager10.msc
进入后按这个路径走:
- 左侧展开 SQL Server网络配置
- 点击 MSSQLSERVER的协议
- 右侧找到 TCP/IP,如果状态是“已禁用”,右键启用
- 双击 TCP/IP,切到 IP地址 选项卡
- 一直拉到底部的 IPAll
- TCP端口 填
1433 - 确认 动态端口 留空或删除
- 回到 SQL Server服务,右键 SQL Server (MSSQLSERVER),选择 重新启动
这里有相当一部分人只启用了TCP/IP,却没有在IPAll里显式设置1433,导致SQL Server启动后使用动态端口,外部客户端自然连不上。
SQL Server远程连接1433端口不通?本机先telnet自己
设置完1433后,先不要急着从外地连,先在本机测试端口是否真正监听。
Windows自带telnet客户端在新系统里默认没开,可以直接用PowerShell命令代替:
Test-NetConnection -ComputerName 127.0.0.1 -Port 1433
看到 TcpTestSucceeded : True,说明本机监听正常,如果返回False,大概率是TCP/IP没启用、1433没写对、SQL Server服务没重启成功,回到上一步重查。
本机通不代表外网通,再到你办公电脑执行:
Test-NetConnection -ComputerName 你的服务器公网IP -Port 1433
如果这条不通,但本机通,问题基本锁定在 云服务器安全组 或 Windows防火墙,不用再怀疑SQL Server本身。
防火墙与云安全组:最容易漏掉的一层
云服务器上sql server远程连接被拒绝,安全组规则要放行1433
如果你用的是简米云、酷番云、华为云等云服务器,Windows防火墙就算全部关闭,云平台的安全组不放行,外部照样连不进来,云安全组是独立于操作系统的外层过滤。
以简米云为例,操作路径是:
- 登录云服务器控制台
- 找到实例,点击 安全组
- 进入 配置规则
- 选择 入方向
- 点击 添加规则
- 协议类型选 自定义TCP
- 端口范围填
1433/1433 - 授权对象填
/0,或者填你办公室出口IP加/32 - 保存
授权对象直接写 /0 虽然方便,但等于把数据库端口暴露给全公网,更稳妥的做法是只放行你常用的办公网络出口IP,如果公司出口IP经常变,可以临时放行,调通后再收紧。
酷番云、华为云的操作逻辑基本一致,只是控制台入口名字可能叫“安全组规则”“防火墙”等。
简米云服务器sql server远程连接不上,检查Windows防火墙的入站规则
云安全组放行后,还要看Windows防火墙是否拦截,服务器管理器里打开 高级安全Windows防火墙,运行 wf.msc 可以直接进入。
新建入站规则步骤:
- 右侧点击 新建规则
- 规则类型选 端口
- 协议选择 TCP,特定本地端口填
1433 - 操作选 允许连接
- 配置文件里域、专用、公用全部勾选
- 名称填
SQL Server 1433 Remote - 完成
如果担心端口写得不对,也可以直接放行程序:
- 新建规则时选 程序
- 浏览到SQL Server的
sqlservr.exe - 路径通常是
C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERMSSQLBinnsqlservr.exe - 同样允许连接
两套方法选其一即可,建议用端口方式,因为换了SQL Server版本路径变化后规则依然有效。
修改过默认1433端口,安全组和防火墙都要同步
有些运维为了安全会把SQL Server端口从1433改成其他端口,比如14330,这时候发现外网连不上,往往是只改了SQL Server配置,没改云安全组和Windows防火墙,端口一致性是排查这类故障的关键。
如果确定改了端口:
- SQL Server配置管理器里IPAll的TCP端口要写新端口
- 云安全组入方向端口要写新端口
- Windows防火墙入站规则端口要写新端口
- 客户端连接字符串里的端口也要写新端口
任何一个环节还是旧1433,都会失败。
身份验证与账号权限:端口通了,登录被拒
SQL Server仅Windows身份验证模式导致远程登录失败
端口通了之后,最常见的登录错误是18456,这个错误码在SQL Server错误日志里会附带状态号,不同状态号代表不同原因,但大多数远程连接场景下,是服务器只开了Windows身份验证模式。
检查方法:
- 本地用SQL Server Management Studio连接服务器
- 对象资源管理器里右键服务器名
- 点击 属性
- 左侧选择 安全性
- 右侧 服务器身份验证 选择 SQL Server和Windows身份验证模式
- 确定后重启SQL Server服务
如果不改这个设置,你创建的SQL账号再正确也登不进来,因为SQL Server根本不接受SQL身份验证。
sql server远程连接设置步骤里,账号创建比想象中更容易翻车
账号创建时要注意三个点:
- 登录名属性里,状态 选项卡下的“登录已启用”必须勾选,否则sa也登不上
- 用户映射 里要勾选目标数据库,并分配
db_owner或更细粒度权限 - 如果密码策略开启,测试密码可能因复杂度不够而创建失败
创建SQL登录名的完整路径:
- 对象资源管理器展开 安全性
- 右键 登录名
- 选择 新建登录名
- 选择 SQL Server身份验证
- 输入登录名和密码
- 取消勾选 强制密码过期
- 左侧 服务器角色 可先勾选
sysadmin便于测试 - 左侧 用户映射 勾选目标数据库
- 下方数据库角色按需勾选
- 确定
如果只给了服务器角色,没有映射到具体数据库,客户端登录后可能看不到目标库,也会被误判为“连接失败”。
默认数据库被删除,登录直接报错
还有一种情况:账号的默认数据库填了某个库,后来这个库被删了,账号登录时直接报错,处理办法是把该登录名的默认数据库改成 master 或真实存在的数据库。
路径:登录名属性 -> 常规 -> 默认数据库。
服务与连接行为的差异
SQL Server Browser服务未启动,命名实例远程连接不上
如果你连接的是命名实例,服务器IPSQL2019,不是默认实例,情况会更复杂一点,命名实例默认使用动态端口,需要 SQL Server Browser服务 帮忙解析端口,该服务没启动时,外部客户端不知道具体端口,自然连接失败。
处理步骤:
- 运行
services.msc - 找到 SQL Server Browser
- 启动类型改成 自动
- 点击 启动
同时要确认Windows防火墙里放行了UDP 1434端口,这是Browser服务使用的端口。
用SSMS测试能连,应用程序连接字符串却失败
这是很常见的对比场景,SSMS用的是图形化连接向导,会自动处理一些参数,应用程序连接字符串则需要显式写清楚。
一个标准SQL Server远程连接字符串大概这样:
Server=你的公网IP,1433;Database=目标数据库;User Id=你的账号;Password=你的密码;Encrypt=True;TrustServerCertificate=True;
如果连接超时,加点超时时间:
Connect Timeout=15;
如果提示SSL证书错误,加:
TrustServerCertificate=True;
如果默认端口没改,可以省略 ,1433,但显式写出来能减少解析环节,排查时更清晰。
排查顺序清单与对比
压缩成一张表,排查时按顺序往下走。
| 测试动作 | 结果 | 优先处理方向 |
|---|---|---|
| 服务器本机测127.0.0.1的1433端口 | 不通 | TCP/IP未启用、1433未设置、服务未重启 |
| 本机通,办公网测公网IP的1433端口 | 不通 | 云安全组未放行、Windows防火墙拦截、端口映射错误 |
| 端口通,登录报18456 | 连接被拒 | 改为混合身份验证模式、检查账号启用状态 |
| 端口通,登录报18470 | 连接被拒 | 检查账号是否有权限、是否映射了目标数据库 |
| 命名实例远程连接不上 | 大概率端口未知 | 启动SQL Server Browser、放行UDP 1434 |
| 连接超时 | 网络层无响应 | 检查公网IP、云安全组、ISP是否封端口、换端口测试 |
行业共识认为,SQL Server远程连接失败中,网络端口与安全组问题占比最高,身份认证问题多发生在端口已经调通之后,这个顺序不建议跳着来。
远程连接失败不可怕,怕的是不清楚每一层控制点在哪里,先把1433端口从服务器本机到公网打通,再解决登录权限问题,绝大多数的sql server远程连接配置失败都能在半小时内定位到原因,端口不通就修端口、安全组和防火墙,端口通就查认证和账号,记住这个逻辑就够了。
Q&A
sql server远程连接配置失败最常见的三个原因是什么?
最常见的是TCP/IP协议未启用或未设置1433端口、云服务器安全组或Windows防火墙未放行1433、服务器身份验证模式仅选择了Windows身份验证,先本机测端口,再查网络放行,最后查认证模式。
简米云服务器sql server远程连接不上和本地虚拟机的区别在哪里?
简米云服务器多了一层云安全组,即使Windows防火墙完全关闭,安全组不放行1433,外部依然无法连接,本地虚拟机通常只需要配置Windows防火墙,云服务器需要在控制台单独添加入方向TCP 1433规则,同时注意安全组规则生效时间和端口一致性。
修改了SQL Server默认1433端口后客户端连接字符串怎么写?
连接字符串使用逗号显式指定端口,Server=123.45.67.89,14330;Database=testdb;User Id=sa;Password=你的密码;,同时SQL Server配置管理器、云安全组、Windows防火墙都必须放行新端口,服务重启后测试 Test-NetConnection -ComputerName 123.45.67.89 -Port 14330,测试通过即可正常使用。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/663489.html





