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

C# (.NET Core 3.1) 无法连接Azure SQL数据库求助

排查Azure SQL数据库C#连接异常的步骤

针对你遇到的VS SQL Server对象资源管理器可正常连接,但C#代码调用conn.Open()时报错的问题,可按以下步骤逐一排查:

1. 修复连接字符串的格式错误

你的连接字符串开头Server关键字前多了一个空格:

string connStr = " Server=tcp:beaconsqlsql.database.windows.net,1433;..."

空格会导致SqlConnection无法正确解析服务器地址,这是触发该错误的常见原因。修正后的连接字符串应去掉开头空格:

string connStr = "Server=tcp:beaconsqlsql.database.windows.net,1433;Initial Catalog=MRP2;Persist Security Info=False;User ID=beaconadmin;Password=********;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";

2. 更换为推荐的SQL客户端库

.NET Core 3.1默认的System.Data.SqlClient库对Azure SQL的兼容性不如微软官方推荐的Microsoft.Data.SqlClient。执行以下步骤更换:

  • 在NuGet包管理器中卸载System.Data.SqlClient
  • 安装Microsoft.Data.SqlClient(版本≥2.0.0)
  • 修改代码中的命名空间引用为using Microsoft.Data.SqlClient;,并将SqlConnection等对象替换为该库下的对应类型

3. 验证密码的正确性与格式

如果密码包含特殊字符(如;、"、=),直接写在连接字符串中会导致解析错误。建议使用SqlConnectionStringBuilder构建连接字符串,避免手动拼接的格式问题:

var builder = new SqlConnectionStringBuilder();
builder.DataSource = "beaconsqlsql.database.windows.net,1433";
builder.InitialCatalog = "MRP2";
builder.UserID = "beaconadmin";
builder.Password = "你的密码";
builder.Encrypt = true;
builder.TrustServerCertificate = false;
builder.ConnectTimeout = 30;
string connStr = builder.ConnectionString;

4. 检查代理设置

如果你的电脑使用了网络代理,控制台应用可能未自动继承系统代理配置,导致无法连接Azure SQL。可在代码开头添加以下代码禁用代理:

System.Net.WebRequest.DefaultWebProxy = null;

或者确认代理是否允许访问Azure SQL的1433端口。

5. 确认Azure SQL的防火墙规则

虽然你已添加本机IP,但可再次登录Azure门户,检查防火墙规则是否包含当前网络的出口IP(部分网络环境下本机IP和出口IP不一致),同时可临时开启允许Azure服务和资源访问此服务器选项,测试是否是网络规则问题。

内容的提问来源于stack exchange,提问作者P. Szk.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:55:23