Azure SQL MI托管身份本地连接正常,Azure VM连接失败排查
问题分析与解决
核心结论
- 使用用户分配托管身份连接Azure SQL托管实例(SQL MI),完全不需要安装Azure CLI,本地运行正常和CLI无依赖关系。
- 你在Azure VM上遇到的连接失败,大概率是用户分配托管身份未被分配给该Azure VM——应用必须依托VM的身份托管能力,才能获取到托管身份的访问令牌完成SQL MI认证。
具体解释与排查步骤
1. 关于Azure CLI的说明
本地Visual Studio能正常连接,是因为VS内置了Azure AD身份认证的调试支持(比如自动使用你登录VS的Azure身份,或调试时模拟托管身份),和Azure CLI没有关联。Azure CLI只是Azure资源的管理工具,和应用运行时的身份认证逻辑无关。
2. 必须为Azure VM分配用户托管身份
用户分配托管身份是独立的Azure资源,你需要将它绑定到运行应用的VM上,VM才能为应用提供身份凭证:
- 登录Azure门户,找到目标VM
- 进入「身份」→「用户分配」标签页
- 点击「添加」,选择你创建的用户托管身份,完成分配操作
3. 额外排查要点
- 若无需系统分配身份,可关闭VM的系统分配身份选项,避免身份冲突
- 检查SQL MI的防火墙/网络规则,确认Azure VM的IP或所在子网已被允许访问
- 再次验证数据库用户权限:确保创建的SQL用户基于目标用户托管身份,且已正确赋予
db_datareader、db_datawriter等读写角色
内容的提问来源于stack exchange,提问作者Jon Sowers
相关产品推荐
相关产品推荐

