You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

简易C#程序无法连接Azure SQL Database问题求助

这个错误本质是同步网络操作遇到了非阻塞套接字的等待状态,结合你连接Azure SQL的场景,主要有这几个核心原因:

  • 连接字符串配置不规范:Azure SQL有严格的连接要求,你的配置存在多处问题:首先,Azure SQL的服务器地址必须是xxx.database.windows.net格式,你写的server.bloo.blah.foobar不符合规则;其次,Azure强制要求加密连接,你没添加Encrypt=True参数,会导致连接握手时出现异常;另外,用户名格式应为用户名@服务器名,你写的user@database也可能引发识别问题。

  • .NET版本与驱动兼容性问题:如果使用的是较旧的.NET Framework版本(比如4.5及以下),旧版SqlClient驱动在处理Azure SQL远程连接时,同步调用Open()会和底层非阻塞套接字逻辑冲突。Azure网络连接需要一定握手时间,旧驱动未处理好同步等待逻辑,就会抛出这个"操作会阻塞"的异常。

  • 网络层面限制:如果你的机器防火墙、公司网络策略或代理服务器挡住了Azure SQL的默认端口1433,连接请求在套接字层面被卡住,同步操作无法处理这种非阻塞状态,就会触发该错误。

对应解决建议

  1. 修正连接字符串:改成符合Azure SQL要求的配置,示例如下:
var cb = new SqlConnectionStringBuilder();
cb.DataSource = "your-server-name.database.windows.net"; // 替换为你的Azure SQL服务器地址
cb.UserID = "your-username@your-server-name"; // 用户名格式要匹配
cb.Password = "your-password";
cb.InitialCatalog = "your-database-name";
cb.Encrypt = true; // 必须开启加密
cb.TrustServerCertificate = false; // 使用Azure正规证书链,不自定义信任
  1. 升级.NET环境:如果用的是.NET Framework,建议升级到4.7.2及以上版本;若条件允许,直接切换到.NET 6/7/8,新版的Microsoft.Data.SqlClient(替代旧的System.Data.SqlClient)对Azure SQL的支持更完善,能避免很多这类套接字问题。

  2. 检查网络连通性:用telnet your-server-name.database.windows.net 1433或者PowerShell命令Test-NetConnection your-server-name.database.windows.net -Port 1433测试端口是否畅通,确保没有防火墙或代理阻止连接。

内容的提问来源于stack exchange,提问作者B. Morris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:30:11