使用Bicep配置Azure SQL用户分配托管身份管理员报错排查
解决Azure SQL Server设置用户分配托管身份为AD管理员的错误
问题根源
你遇到的Invalid value given for parameter ExternalAdministraorLoginSid错误,主要来自Bicep代码中的几处关键错误:
- 拼写错误:
administraorType应为administratorType,参数名不正确会导致解析失败 - principalType错误:用户分配托管身份属于Azure AD中的ServicePrincipal类型,而非
Group - Sid值错误:你使用了托管身份的Client ID,但实际需要填写的是它的Object ID(principalId)
修正后的Bicep代码
如果已创建用户分配托管身份资源,推荐直接引用其属性而非硬编码值,避免手动复制错误:
// 假设已定义用户分配托管身份资源 resource userAssignedMI 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = { name: 'userAssignedManagedIdName' location: location } resource sqlserver 'Microsoft.Sql/servers@2021-11-01-preview' = { name: 'sqlserver${uniqueString(resourceGroup().id)}' location: location properties: { // 若启用azureADOOnlyAuthentication,本地管理员账号可省略 administratorLogin: sqlAdministratorLogin administratorLoginPassword: sqlAdministratorPassword version: '12.0' administrators: { administratorType: 'ActiveDirectory' principalType: 'ServicePrincipal' azureADOOnlyAuthentication: true login: userAssignedMI.name sid: userAssignedMI.properties.principalId tenantId: userAssignedMI.properties.tenantId } } }
关键说明
- principalType:用户分配托管身份的本质是Azure AD服务主体,必须设置为
ServicePrincipal - sid:对应托管身份的
principalId(在Azure门户托管身份属性页的"对象ID"字段),而非"客户端ID" - azureADOOnlyAuthentication:若启用该选项,将禁用SQL本地管理员登录,仅允许Azure AD身份验证
内容的提问来源于stack exchange,提问作者Lucky
相关产品推荐
相关产品推荐

