Navicat无法连接动态端口SQL Server,需先禁用动态端口并配置固定端口(如1521),在SQL Server配置管理器中清空TCP Dynamic Ports、填写TCP Port,重启对应服务;Navicat主机栏必须用英文逗号分隔IP与端口(如192.168.1.100,1521),禁用冒号;最后验证端口连通性、防火墙放行及身份验证模式。

Navicat 无法连接动态端口的 SQL Server?先停掉动态端口
动态端口(Dynamic Port)是 SQL Server 的默认行为之一,但它和 Navicat 不兼容——因为 Navicat 要求连接时明确指定一个固定端口号,而动态端口每次重启服务都会变,192.168.1.100,54321 今天能连,明天可能就变成 192.168.1.100,54322,Navicat 不会自动探测或重试。所以第一步不是配 Navicat,而是关掉动态端口。
操作路径:打开 SQL Server Configuration Manager → 展开“SQL Server Network Configuration” → 点击对应实例的“Protocols for [实例名]” → 右键 TCP/IP → “属性” → 切换到“IP Addresses”选项卡 → 拉到底部找到 IPAll 区域:
- 清空
TCP Dynamic Ports字段(删掉里面所有的数字,留空) - 在
TCP Port字段填入一个固定端口,比如1521或54321(避开 1433、1434 等常见保留端口) - 确认所有 IPx 行的
TCP Port值为空(只用IPAll统一指定)
改完必须重启 SQL Server (MSSQLSERVER) 或对应命名实例的服务,否则不生效。
Navicat 主机栏怎么填:逗号,不是冒号
很多人在 Navicat 的“主机名/IP地址”输入框里写 192.168.1.100:1521,结果报错 [08001] 连接超时 或直接提示“服务器未找到”。这是因为 Navicat 对 SQL Server 使用的是 Microsoft ODBC / SQL Native Client 协议语法,端口必须用英文逗号分隔,不是 URL 风格的冒号。
正确写法只有这几种:
-
192.168.1.100,1521(仅 IP + 端口) -
myserver,1521(仅主机名 + 端口) -
192.168.1.100\INST,1521(IP + 命名实例 + 端口,注意反斜杠和逗号共存)
错误写法包括:192.168.1.100:1521、192.168.1.100,1521,1433(多逗号)、中文逗号、空格前后混入。
连接前必须验证的三件事
即使端口填对了,也常因底层阻断失败。建议按顺序快速验证:
- 用
telnet 192.168.1.100 1521测试端口是否通(Windows 默认未启用 telnet,可用Test-NetConnection 192.168.1.100 -Port 1521替代) - 检查 Windows 防火墙是否放行该端口:入站规则中要有针对
sqlservr.exe或 TCP 端口1521的允许项 - 确认 SQL Server 登录模式支持你用的认证方式:如果用 SQL Server 账号(非 Windows 身份),需在 SSMS 中右键服务器 → “属性” → “安全性” → 勾选“SQL Server 和 Windows 身份验证模式”,并确保账号已启用且密码正确
为什么 Navicat 的“端口”输入框是灰色的?
在 Navicat 新建 SQL Server 连接窗口里,如果你看到“端口”字段是灰色不可编辑状态,说明你当前填写的“主机名/IP地址”被识别为命名实例格式(含反斜杠),例如 192.168.1.100\INST。此时 Navicat 会自动尝试走 SQL Server Browser 服务查端口,而忽略手动填的端口值——但 Browser 服务默认不监听 UDP 1434,或已被禁用,尤其在关闭动态端口后更不可靠。
解决办法只有两个:
- 改用逗号拼接法:把主机栏改成
192.168.1.100\INST,1521,让 Navicat 强制走 TCP 直连 - 或者彻底不用命名实例,改用 IP + 固定端口(如
192.168.1.100,1521),并在 SQL Server 中确认该端口绑定的是默认实例(或你期望的实例)
真正容易被忽略的是:动态端口关了、静态端口设了、防火墙开了、Navicat 也填对了逗号,但没重启 SQL Server 服务——所有配置都白搭。重启服务这一步,永远排在验证之前。











