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

Entity Framework Core执行update-database连接Azure SQL登录失败

问题排查解决步骤

该报错为Entity Framework Core执行设计时迁移命令时,使用Azure AD账号登录Azure SQL数据库失败,可按以下顺序排查:

1. 检查设计时工具的配置读取逻辑

EF Core的update-database命令默认读取启动项目的配置文件,若DbContext单独存放在类库项目中,执行命令时未指定启动项目,会导致无法读取正确的连接字符串,出现账号密码为空的情况。

  • 解决方案:执行命令时显式指定启动项目和DbContext所在项目,包管理器控制台命令示例:
Update-Database -StartupProject <启动项目名称> -Project <DbContext所在类库名称>

2. 验证连接字符串配置有效性

当前连接字符串使用Authentication=Active Directory Password认证模式,需保证以下配置正确:

  • User ID必须填写完整的Azure AD账号全称,Password填写对应账号的登录密码,两个参数值前后不能留多余空格
  • 可临时硬编码连接字符串测试,排除配置读取异常:
services.AddDbContext<AAAADbContext>(options => 
  options.UseSqlServer("Server=tcp:xxxx-xxxxxxxx.database.windows.net,1433;Initial Catalog=xxxxxxxxxxxDb;Persist Security Info=False;User ID=hxxxxxxxo@hxxxxxxxogmail.onmicrosoft.com;Password=实际账号密码;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication=Active Directory Password"));
  • 若账号开启了多因素认证(MFA),Active Directory Password模式不支持MFA验证,需将认证方式修改为Authentication=Active Directory Interactive,执行命令时会弹出浏览器窗口完成身份验证。

3. 验证数据库账号权限

确认Azure AD账号已在目标数据库中创建包含用户,且具备迁移所需的权限:

  • 在SSMS中连接目标数据库,执行以下SQL查询验证账号是否存在:
SELECT * FROM sys.database_principals WHERE name = 'hxxxxxxxo@hxxxxxxxogmail.onmicrosoft.com'
  • 若账号不存在,执行以下语句创建用户并授权:
CREATE USER [hxxxxxxxo@hxxxxxxxogmail.onmicrosoft.com] FROM EXTERNAL PROVIDER;
ALTER ROLE db_owner ADD MEMBER [hxxxxxxxo@hxxxxxxxogmail.onmicrosoft.com];

4. 检查依赖包版本兼容性

低版本的Microsoft.Data.SqlClient对Azure AD身份验证的支持存在已知缺陷,需保证项目引用的Microsoft.Data.SqlClient版本≥3.0.0,且EF Core版本与Microsoft.EntityFrameworkCore.SqlServer版本完全一致。

5. 验证网络访问权限

确认当前执行命令的设备公网IP已添加到Azure SQL服务器的防火墙白名单中,或已开启Azure SQL服务器的允许Azure服务访问配置。


内容的提问来源于stack exchange,提问作者Helder Lourenço

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:54:05