SSMS连接Azure SQL专用池失败:预登录握手报错(以太网专属问题)
Azure SQL专用池连接故障排查(以太网连接异常,WiFi正常)
问题详情
- 此前通过SSMS连接Azure SQL专用池执行查询完全正常,中途终止某条查询后,无法再建立连接
- 报错信息:
已成功与服务器建立连接,但在预登录握手期间发生错误。(provider: TCP Provider, error: 0 - 指定的网络名称不再可用。) (Framework Microsoft SqlClient Data Provider)
- 运行环境:工作机部署了Zscaler
- 异常特征:仅以太网连接时出现该问题,切换到WiFi可正常访问;其他用户无此异常
- 权限限制:无机器管理员权限
- 已尝试的操作:执行PowerShell命令
netsh winsock reset;重启机器、路由器、Zscaler客户端、SQL池
排查与解决建议
1. 核对Zscaler网络适配策略
打开Zscaler客户端,检查以太网连接对应的代理规则是否和WiFi连接一致。不同网络适配器可能触发Zscaler不同的拦截策略,终止查询的操作可能临时修改了以太网的规则,导致SQL连接的端口(默认1433或Azure SQL专用池的专属端口)被阻断。试试重置Zscaler的网络配置(找客户端内无需管理员权限的重置选项),或者手动切换代理模式(比如从自动改为手动指定)。
2. 清空SSMS连接缓存
- 打开SSMS,点击「连接」→「数据库引擎」,在连接窗口点「选项」→「连接属性」,取消勾选「保留连接」,再尝试重新连接。
- 找到SSMS缓存目录(路径一般是
%LOCALAPPDATA%\Microsoft\SQL Server Management Studio\<具体版本号>\),删除里面的Cache文件夹(无需管理员权限),然后重启SSMS。
3. 测试TCP连通性
- 用PowerShell执行
tracert <你的Azure SQL专用池服务器名>,对比以太网和WiFi下的路由路径,看是否有异常节点拦截。 - 执行
Test-NetConnection <你的Azure SQL专用池服务器名> -Port 1433,检查以太网连接下1433端口是否能正常连通,不通的话基本是Zscaler或本地网络策略拦截了端口。
4. 更换SSMS连接协议
在SSMS连接窗口的「选项」→「连接属性」里,把「网络协议」从默认的「TCP/IP」改成「Named Pipes」或「Shared Memory」,尝试绕过TCP层面的拦截问题。
5. 添加Zscaler旁路地址
如果Zscaler客户端允许自行添加旁路地址,把Azure SQL专用池的服务器地址加入旁路列表,让以太网下的SQL请求不经过Zscaler代理,直接发起连接。
内容的提问来源于stack exchange,提问作者Dan Peter
相关产品推荐
相关产品推荐

