如何通过端口转发连接Microsoft SQL Server?本地localhost连接失败
问题分析与解决步骤
你遇到的问题核心在于localhost的解析优先级和端口转发规则的适配性,结合你的操作场景,可按以下步骤排查解决:
1. 确认localhost的解析地址
在本地命令提示符执行:
ping localhost
如果返回的是[::1](IPv6地址),说明系统优先将localhost解析为IPv6,而你仅配置了IPv4到IPv4的端口转发规则,导致请求无法匹配转发规则,连接失败。
2. 快速验证:用127.0.0.1替代localhost
直接在SSMS中连接127.0.0.1或127.0.0.1,1433,如果能正常连接,就证实了是localhost解析为IPv6导致的问题。
3. 永久解决方法
方案一:添加IPv6到IPv4的转发规则
如果需要保留localhost的使用,执行以下命令添加IPv6到IPv4的转发规则:
netsh interface portproxy add v6tov4 listenaddress=::1 listenport=1433 connectaddress=192.168.1.110 connectport=1433 netsh interface portproxy add v6tov4 listenaddress=::1 listenport=1434 connectaddress=192.168.1.110 connectport=1434
执行后再用localhost连接即可生效。
方案二:强制localhost解析为IPv4
修改本地hosts文件(路径:C:\Windows\System32\drivers\etc\hosts),添加一行:
127.0.0.1 localhost
保存后刷新DNS缓存(执行ipconfig /flushdns),此时localhost会优先解析为IPv4地址,匹配你已配置的v4tov4转发规则。
4. 关于SSMS连接格式的说明
SSMS中,默认实例指定端口的标准格式是localhost:1433(冒号分隔),而localhost,1433是兼容写法,但本质上还是依赖localhost的解析结果,解决解析问题后两种格式都能正常使用。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

