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

为Azure SQL Server分配用户托管标识时遇问题求助

解决Azure Function App使用用户托管身份连接Azure SQL Server的问题

核心问题梳理

你当前的问题主要集中在三个环节:

  • SQL用户创建的名称与实际用户托管标识不匹配
  • 连接字符串配置错误(多余的User ID参数)
  • 系统分配标识与用户分配标识的配置逻辑混淆

分步解决方案

1. 修正SQL用户/登录的创建逻辑

用户托管身份连接SQL时,必须使用Azure门户中用户托管标识的真实名称或客户端ID来创建服务器登录和数据库用户,不能自行命名(比如你用的UMI1如果不是标识的实际名称,就会导致身份匹配失败):

  1. 先在Azure门户获取标识信息:进入「用户托管标识」→ 选中目标标识→ 概览页查看名称或客户端ID
  2. 在SQL服务器的master数据库执行命令创建登录:
    CREATE LOGIN [你的用户托管标识名称/客户端ID] FROM EXTERNAL PROVIDER;
    GO
    
  3. 切换到业务数据库,创建对应用户并授权:
    CREATE USER [你的用户托管标识名称/客户端ID] FROM EXTERNAL PROVIDER;
    GO
    ALTER ROLE db_datareader ADD MEMBER [你的用户托管标识名称/客户端ID];
    ALTER ROLE db_datawriter ADD MEMBER [你的用户托管标识名称/客户端ID];
    GO
    

2. 修正Function App的连接字符串

使用用户托管身份连接SQL时不需要指定User ID参数,正确格式为:

Server=tcp:{你的SQL服务器名}.database.windows.net,1433;Initial Catalog={数据库名};Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication=Active Directory Managed Identity
  • 核心是添加Authentication=Active Directory Managed Identity参数,让Function App自动使用已关联的用户托管身份完成认证

3. 正确配置Function App的用户托管身份

  1. 进入你的Function App→「身份」→「用户分配」标签→点击「添加」,选中目标用户托管标识并保存
  2. 若仅需用户托管身份,建议关闭「系统分配」标签下的标识,避免认证逻辑冲突

4. 排查历史错误原因

  • 启用系统标识时的Login for User ''错误:是因为系统分配标识未在SQL中创建对应的登录和用户,且连接字符串未配置托管身份认证参数
  • 关闭系统标识后无法加载托管标识:是因为Function App未正确关联用户托管标识,或连接字符串未指定Authentication参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:30:55