无法通过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
相关产品推荐
相关产品推荐

