Azure SQL连接失败主因是防火墙拦截本地公网IP,需在Azure门户的“Firewalls and virtual networks”中通过“Add client IP”添加当前公网IPv4地址,或临时启用“允许 Azure 服务和资源访问此服务器”测试连通性。
Navicat 连接 Azure SQL Database 时提示“Cannot connect to server”
绝大多数情况是 azure 防火墙拦截了你的本地 ip,而不是 navicat 配置错了。azure sql 默认拒绝所有外部连接,必须显式放行 ip 才能建立 tcp 连接。
操作前确认你已拥有:Azure SQL Server 的完整服务器名(如 myserver.database.windows.net)、登录用户名(非 Azure AD 账户需为 SQL 身份验证用户)、密码,以及有权限修改该服务器防火墙规则的 Azure 账户(如 Owner 或 SQL Security Manager)。
- 不要用客户端本地网络的内网 IP(如
192.168.x.x或10.x.x.x),必须用公网出口 IP - 可用浏览器访问 whatismyipaddress.com 确认当前公网 IP
- 如果使用公司网络或代理,IP 可能动态变化——建议先临时设置「允许 Azure 服务和资源访问此服务器」为 是,测试连通性后再收紧策略
在 Azure 门户中添加单个 IPv4 地址到服务器级防火墙
登录 Azure 门户 → 搜索并进入你的 SQL servers → 选择目标服务器 → 左侧菜单点「Firewalls and virtual networks」→ 在「Firewall rules」区域点击「+ Add client IP」按钮(它会自动填入你当前浏览器的公网 IPv4)。
这个操作本质是创建一条规则:起始 IP = 结束 IP = 你当前的公网 IP,名称默认为 ClientIP_XXXX。但注意:
-
Add client IP按钮只读取浏览器请求头中的 IP,若你走代理、CDN 或企业 NAT 网关,该 IP ≠ Navicat 实际发起连接的出口 IP - 规则生效有延迟,通常
- IPv6 地址不会被自动识别,Azure SQL 当前仅支持 IPv4 防火墙规则
Navicat 中配置连接参数的关键项
新建连接 → 选择 Microsoft SQL Server 类型 → 填写以下字段:
-
Connection Name:任意,如azure-prod -
Host:填 Azure 提供的 FQDN,例如myserver.database.windows.net(不是 IP,也不是myserver.database.windows.net:1433) -
Port:保持默认1433(Azure SQL 不接受自定义端口) -
Authentication:选SQL Server Authentication(除非你明确配置了 Azure AD 集成且 Navicat 版本 ≥ 16.1) -
Login和Password:输入 SQL 登录凭据(不是 Azure 用户名) - 勾选
Save password仅限本地调试环境;生产连接建议禁用
点击「Test Connection」前,确保上一步防火墙规则已保存且生效。失败时错误常为:Failed to connect to server: myserver.database.windows.net:1433. Login failed for user 'xxx'. —— 此时优先排查防火墙,其次再查账号权限。
为什么加了 IP 还连不上?几个隐蔽坑点
常见假阳性问题往往不在 Navicat 本身:
- Azure SQL Server 层级启用了「Require encrypted connection」(默认开启),而旧版 Navicat(≤ v15)可能未强制启用 TLS 1.2,导致握手失败;升级到
Navicat Premium 16+或手动勾选「Use SSL」选项可缓解 - 数据库名填错:
Database字段必须填你实际要连接的目标数据库名(如myappdb),不能留空或填master(除非你真要连 master) - SQL 登录用户没被授予目标数据库的
CONNECT权限:即使服务器级登录成功,进库仍会报错The server principal "xxx" is not able to access the database "yyy" under the current security context. - 你的 ISP 或本地防火墙(如 Windows Defender 防火墙)主动拦截了出站
1433端口 —— 可用 PowerShell 快速验证:Test-NetConnection myserver.database.windows.net -Port 1433
真正卡住的地方,往往是 IP 动态变化 + 防火墙规则没更新 + Navicat 缓存了旧错误状态。删掉连接重试前,先在 Azure 门户里确认规则时间戳是否最新,再清空 Navicat 的连接缓存(关闭软件重开)。


















