WSL中MS SQL Server实例名无法解析的问题排查求助
排查WSL Ubuntu环境下MS SQL实例名端口解析问题的方向
检查SQL Server Browser服务状态
实例名到端口的解析完全依赖SQL Server Browser服务,先确认Windows主机上的这个服务是否正常运行:- 打开Windows的
services.msc,找到SQL Server Browser,确保状态是“正在运行”,启动类型设为“自动” - 或者用PowerShell快速操作:
# 查看服务状态 Get-Service SQLBrowser # 启动服务 Start-Service SQLBrowser # 设置为自动启动 Set-Service SQLBrowser -StartupType Automatic
- 打开Windows的
验证UDP 1434端口的连通性
SQL Server Browser通过UDP 1434端口返回实例对应的端口号,WSL到Windows主机的这个端口可能被防火墙拦截:- 先在WSL里安装
netcat工具:sudo apt install netcat - 测试连通性:
nc -u -zv someserver 1434 - 如果不通,去Windows防火墙添加入站规则:允许UDP 1434端口,或者直接允许SQL Server Browser程序的入站连接
- 先在WSL里安装
排查WSL网络模式问题
WSL2默认用NAT网络,可能存在主机名解析或端口转发的问题:- 试试用Windows主机的实际IP替代
someserver,比如server = '192.168.x.x\someinstance',看能否正常解析实例 - 若NAT模式问题无法解决,可切换到桥接模式:
- 在Windows的“Hyper-V管理器”里创建一个虚拟交换机(桥接物理网卡)
- 在用户目录下创建
.wslconfig文件,添加以下配置:[wsl2] networkMode=bridged vmSwitch=你的虚拟交换机名称 - 重启WSL:
wsl --shutdown,再重新打开Ubuntu
- 试试用Windows主机的实际IP替代
确认WSL中ODBC驱动的状态
确保WSL里的ODBC驱动安装正确且版本兼容:- 查看已安装的ODBC驱动:
odbcinst -q -d,确认输出里有ODBC Driver 17 for SQL Server - 若驱动缺失或版本过旧,重新安装最新版:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - sudo curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list sudo apt update sudo ACCEPT_EULA=Y apt install msodbcsql17
- 查看已安装的ODBC驱动:
检查SQL Server实例的TCP/IP配置
确认目标实例的TCP/IP协议已启用且端口配置正确:- 在Windows上打开SQL Server配置管理器,找到SQL Server网络配置 -> 针对someinstance的协议 -> TCP/IP,确保状态为“已启用”
- 双击TCP/IP,切换到“IP地址”选项卡,确认实例监听的端口是1435(和你描述的一致)
- 用
netstat -ano | findstr :1435检查Windows主机上1435端口是否被其他服务占用
内容的提问来源于stack exchange,提问作者jan-seins
相关产品推荐
相关产品推荐

