Intellij连接MS SQL Server SQLEXPRESS实例Socket超时故障求助
故障根因
两种认证方式返回完全一致的UDP 1434接收超时,说明故障发生在命名实例端口协商阶段,连接根本没走到身份校验环节。跨多台PC、多套环境复现的前提下,基本可以排除单台机器偶发防火墙规则异常,属于SQL Server命名实例远程连接的标准化配置漏项导致的问题。
排查与解决步骤
按优先级从高到低操作:
- 优先检查SQL Server Browser服务状态
到数据库所在主机按Win+R输入services.msc打开服务面板,找到SQL Server Browser服务,将启动类型改为「自动」后手动启动服务。SQL Server Express版本默认会将该服务设为禁用状态,没有服务监听UDP 1434端口的话,客户端发起的实例查询请求根本得不到响应,会直接触发你看到的超时错误。 - 检查SQLEXPRESS实例的网络协议配置
打开SQL Server配置管理器,找到「SQL Server网络配置」-「SQLEXPRESS的协议」,确认TCP/IP协议为已启用状态——默认安装时很多实例只开启了Shared Memory协议,该协议仅支持本机连接,远程访问直接不通。修改协议状态后需要重启SQLEXPRESS对应的数据库服务才会生效。 - 修正防火墙规则,不要只放行1433端口
SQL Server命名实例默认使用动态TCP端口,不是默认实例用的固定1433端口,仅放行1433没有作用。需要在数据库所在主机的防火墙添加两条入站规则:- 放行UDP 1434端口的入站流量,供SQL Server Browser服务返回实例对应的动态端口信息
- 给
sqlservr.exe(对应SQLEXPRESS实例的进程)放行入站TCP流量,嫌麻烦也可以在TCP/IP协议配置里给SQLEXPRESS指定一个固定TCP端口(比如14330),单独放行该固定端口即可
- 修正Intellij的连接配置
不要依赖工具自动生成的拼接式连接URL,老版本SQL Server JDBC驱动对主机名\实例名的拼接格式解析存在兼容问题,直接手动修改连接URL:- 集成身份认证场景用:
jdbc:sqlserver://<数据库主机IP/主机名>;instanceName=SQLEXPRESS;databaseName=cbr;integratedSecurity=true;encrypt=true;trustServerCertificate=true - SQL账号认证场景用:
jdbc:sqlserver://<数据库主机IP/主机名>;instanceName=SQLEXPRESS;databaseName=cbr;user=<你的账号>;password=<你的密码>;encrypt=true;trustServerCertificate=true
配置时优先用数据库主机的内网IP填写host字段,排除NetBIOS主机名解析失败导致的超时。
- 集成身份认证场景用:
验证顺序
按从底层到上层的顺序验证,避免无效排查:
- 先在数据库本机用SSMS连接
localhost\SQLEXPRESS,确认数据库实例本身运行正常、账号权限有效 - 临时关闭数据库主机和客户端主机的防火墙测试一次,如果连接成功,回去补精准的端口/进程放行规则即可,不要长期关闭防火墙
- 最后回到Intellij侧修改连接参数测试
内容的提问来源于stack exchange,提问作者Jartyyy
相关产品推荐
相关产品推荐

