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

无法通过C# .NET Core应用使用Azure AD登录数据库求助

Azure AD集成认证连接Azure SQL DB报错解决

问题原因

使用Active Directory Integrated认证模式时,不需要手动指定User Id——这种模式会自动使用当前运行代码的Windows账户(该账户需已同步到Azure AD)。你在连接字符串里额外添加了User Id参数,导致SQL客户端无法正确识别用户类型,触发unknown_user_type错误。

解决方案

1. 修正连接字符串(Integrated模式)

移除连接字符串中的User Id=UserId;部分,修改后的代码如下:

string ConnectionString = @"Server=tcp:predictive-wxmstocxodfjc-dms.database.windows.net;" +
                          @"Authentication=Active Directory Integrated; Encrypt=True;";

using (SqlConnection conn = new SqlConnection(ConnectionString)) 
{
    conn.Open();
}

注意:运行代码的Windows账户必须是已同步到Azure AD的用户,且该用户已被授予Azure SQL数据库的对应权限(比如读写、只读)。

2. 若需指定特定AD用户(非当前Windows账户)

如果需要用特定的Azure AD用户而非当前运行账户登录,可以改用Active Directory Password认证模式,此时需完整填写User Id和Password:

string ConnectionString = @"Server=tcp:predictive-wxmstocxodfjc-dms.database.windows.net;" +
                          @"Authentication=Active Directory Password; Encrypt=True;" +
                          @"User Id=your-aad-user@yourdomain.com; Password=your-password;";

using (SqlConnection conn = new SqlConnection(ConnectionString)) 
{
    conn.Open();
}

3. 权限验证确认

确保目标Azure AD用户已在Azure SQL数据库中被正确授权:

  • 登录Azure Portal,找到对应的SQL数据库
  • 进入“查询编辑器”,执行授权语句(示例):
    -- 授予读写权限
    ALTER ROLE db_datawriter ADD MEMBER [your-aad-user@yourdomain.com];
    ALTER ROLE db_datareader ADD MEMBER [your-aad-user@yourdomain.com];
    
    -- 授予只读权限
    ALTER ROLE db_datareader ADD MEMBER [your-aad-user@yourdomain.com];
    

内容的提问来源于stack exchange,提问作者Lily

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:21:00