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

将Azure Entra组分配到Azure SQL Server角色后登录失败问题排查

解决Azure Entra组分配SQL Server角色后成员登录失败的问题

核心问题分析与解决步骤

当你已成功为Entra组创建SQL登录并分配服务器角色,但组内服务主体仍无法登录时,可按以下环节逐一排查:

1. 确认服务主体的组归属与同步状态

  • 检查Entra ID中DEPLOYMENT-TMPAPI-DEV-READER服务主体是否确实属于DATABASE READERS GROUP组,注意组成员变更可能存在15-30分钟的同步延迟,需等待变更生效后再测试。

2. 修正SQL登录的组名称匹配问题

Entra组的显示名称和主体名称(Principal Name)可能不一致,创建SQL登录时必须使用组的主体名称(通常格式为组名@域名.com),而非显示名称。修改后的SQL语句示例:

CREATE LOGIN [DATABASE READERS GROUP@yourdomain.com] FROM EXTERNAL PROVIDER;
GO
ALTER SERVER ROLE ##MS_DatabaseConnector## ADD MEMBER [DATABASE READERS GROUP@yourdomain.com];
GO

3. 补全所需的服务器角色权限

如果需要访问所有数据库元数据,需同时为组分配##MS_DefinitionReader##角色:

ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [DATABASE READERS GROUP@yourdomain.com];
GO

4. 验证服务主体的登录配置

服务主体登录时需使用Entra ID认证,确保连接字符串包含Authentication=Active Directory Service Principal参数,并正确传入服务主体的客户端ID与密钥。

5. 检查SQL Server的Entra认证基础配置

确认Azure SQL Server已启用Entra ID认证,且已设置有效的Entra管理员(管理员需为Entra用户或组,不能是服务主体)。

验证配置的SQL查询

执行以下语句确认组权限配置是否正确:

-- 查询服务器角色成员
SELECT r.name AS role_name, m.name AS member_name, m.type_desc
FROM sys.server_role_members rm
JOIN sys.server_principals r ON rm.role_principal_id = r.principal_id
JOIN sys.server_principals m ON rm.member_principal_id = m.principal_id
WHERE r.name IN ('##MS_DatabaseConnector##', '##MS_DefinitionReader##');

-- 查询外部组登录信息
SELECT name, type_desc, authentication_type_desc
FROM sys.server_principals
WHERE type_desc = 'EXTERNAL_GROUP';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:41:11