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

Azure Synapse专用SQL池基于组的身份验证登录失败求助

问题分析与解决方案

你遇到的问题是Azure Synapse专用SQL池与常规Azure SQL Server/Database在Entra ID组身份验证上的行为差异导致的,以下是针对性的解决步骤:

1. 确认Synapse工作区的Entra ID管理员配置

Synapse专用SQL池的Entra ID身份验证依赖工作区级别的Entra ID管理员配置,而非SQL管理员。需在Synapse Studio完成以下操作:

  • 进入管理 > SQL池管理员
  • 设置一个Entra ID用户或组作为管理员(若未设置,Entra ID身份验证将完全失效)

2. 修正权限授予脚本(移除master数据库操作)

Synapse专用SQL池不需要在master数据库创建登录,直接在目标专用池内创建外部用户即可。原脚本中master数据库的CREATE LOGIN操作是Azure SQL的逻辑,会在Synapse环境中引发身份冲突。修正后的脚本仅在目标专用SQL池中执行:

CREATE USER [sg-datahub-synapse-dev-read] FROM EXTERNAL PROVIDER;
EXEC sp_addrolemember 'db_datareader', 'sg-datahub-synapse-dev-read';
GRANT VIEW DEFINITION TO [sg-datahub-synapse-dev-read];

3. 验证Entra ID组的有效性

  • 确保创建的组是安全组(而非Microsoft 365组或服务主体组),Synapse仅支持安全组用于权限分配
  • 若组名存在歧义,可通过组的ObjectID精准创建用户:
    1. 用PowerShell获取组的ObjectID:
      Get-AzADGroup -DisplayName "sg-datahub-synapse-dev-read"
      
    2. 在专用SQL池中执行:
      CREATE USER [sg-datahub-synapse-dev-read] WITH SID = '<获取到的ObjectID>', TYPE = E;
      
    3. 重新执行角色和权限授予操作

4. 检查客户端工具与登录配置

  • 使用支持Synapse MFA的客户端版本:SSMS 18.6+、Azure Data Studio最新版
  • 登录时确保输入正确的Synapse专用池端点:{工作区名称}.sql.azuresynapse.net,选择Azure Active Directory - 通用且支持MFA身份验证类型

5. 清理冲突的登录对象

若之前在master数据库创建了同名登录,需删除该登录以避免身份识别混淆:

-- 在master数据库执行
DROP LOGIN [sg-datahub-synapse-dev-read];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:41:06