根本原因是防火墙默认拦截1433端口,需清空TCP动态端口并设固定端口1433,再在Windows防火墙及云平台安全组中分别新建TCP 1433入站规则,命名实例还需启用SQL Server Browser并放行UDP 1434。
开启 windows 防火墙后 sql server 远程连接失败,根本原因不是防火墙“不该开”,而是它默认拦截了数据库通信所需的端口和服务。只要正确放行关键路径,远程连接就能既安全又稳定。
确认 SQL Server 正在监听 TCP/IP 并使用固定端口
防火墙规则必须和 SQL Server 实际监听的端口一致。默认实例通常用 1433,但若未显式配置,SQL Server 可能启用动态端口(每次启动变),导致防火墙规则失效。
- 打开 SQL Server 配置管理器 → 展开「SQL Server 网络配置」→ 找到你的实例(如 SQL Server (MSSQLSERVER))→ 右键「TCP/IP」→ 选择「启用」
- 双击已启用的 TCP/IP → 切换到「IP 地址」页 → 拉到底部找到 IPAll 区域 → 清空「TCP 动态端口」(留空),在「TCP 端口」中填入 1433(或其他你指定的静态端口)
- 重启对应的 SQL Server 服务(如 SQL Server (MSSQLSERVER))
为 1433 端口创建精准的入站防火墙规则
仅靠“允许 sqlservr.exe”程序规则不够可靠,尤其在云服务器或多网卡环境下;基于端口的规则更直接、可验证。
- 按 Win+R 输入
wf.msc打开「高级安全 Windows Defender 防火墙」 - 左侧选「入站规则」→ 右侧点「新建规则」→ 类型选「端口」→ 下一步
- 协议选 TCP → 特定本地端口填 1433(若改过端口,请填实际值)→ 下一步
- 操作选「允许连接」→ 下一步
- 配置文件务必勾选 域、专用、公用(外网访问必须含「公用」)→ 下一步
- 名称建议写清楚,例如:SQL Server - TCP 1433 允许远程连接
检查并放行 SQL Server Browser(仅命名实例必需)
如果你连接的是命名实例(如 192.168.1.100\SQLEXPRESS),客户端需先通过 UDP 1434 端口向 SQL Server Browser 服务查询实际端口号。该服务未运行或端口被拦,就会超时失败。
- 在「SQL Server 配置管理器」→ 左侧「SQL Server 服务」→ 找到 SQL Server Browser → 右键「启动」,并设启动类型为「自动」
- 回到
wf.msc→ 新建一条入站规则 → 类型选「端口」→ 协议选 UDP → 特定本地端口填 1434 → 允许连接 → 勾选全部配置文件 → 命名如「SQL Server Browser - UDP 1434」 - 更稳妥的做法:直接用 IP+端口方式连接(如
192.168.1.100,1433),绕过 Browser 依赖
云服务器额外注意:安全组必须同步放行
像腾讯云、阿里云等 CVM 实例,Windows 防火墙只是第二道关卡;第一道是云平台的「安全组」策略,它在网络层就过滤流量,优先级更高。
- 登录云控制台 → 找到对应云服务器 → 进入「安全组」设置
- 添加入方向规则:协议类型选 TCP,端口范围填 1433(或你设定的端口),源 IP 可设为 0.0.0.0/0(测试用)或限定可信 IP 段
- 若用命名实例且依赖 Browser,还需加一条 UDP 1434 规则


















