Azure Pipelines中使用Azure SQL Server SMI创建包含用户失败的解决方法
解决方案:使用Azure SQL Server系统分配托管身份执行管道脚本
1. 为SQL Server SMI授予数据库操作权限
使用具有Azure AD管理员权限的账户(例如被设为SQL Server AAD管理员的账户)登录目标SQL数据库,执行以下脚本,为SQL Server的系统分配托管身份创建数据库用户并赋予必要权限:
-- 替换为你的Azure SQL Server名称(系统分配SMI的名称与服务器名称一致) CREATE USER [your-sql-server-name] FROM EXTERNAL PROVIDER; -- 授予足够权限:这里使用db_owner,也可根据需求分配更细粒度权限(如ALTER ANY USER、ALTER ANY ROLE) ALTER ROLE db_owner ADD MEMBER [your-sql-server-name];
2. 配置Azure发布管道任务
在Azure DevOps发布管道中,修改Azure SQL Database部署任务的配置,使其使用SQL Server的系统分配托管身份认证:
- Authentication type:选择
Managed Identity - Server name:填写你的SQL服务器全名(格式:
xxx.database.windows.net) - Database name:指定目标数据库名称
- Managed Identity:选择
System-assigned managed identity,并选中你的Azure SQL Server对应的系统分配托管身份 - Inline SQL script:保留原有脚本:
CREATE USER [my-func-dev-weu] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo; ALTER ROLE [db_owner] ADD MEMBER [my-func-dev-weu];
补充验证
确保之前的AAD组配置生效:包含Directory Readers角色的AAD组已添加SQL Server的SMI作为成员,这样SQL Server的SMI才能读取Azure AD中的Function App主体信息,成功创建外部用户。
内容的提问来源于stack exchange,提问作者Panayotis Tzedakis
相关产品推荐
相关产品推荐

