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

ubuntu-latest托管代理运行AddOrUpdateUserAzure@1失败,求Linux下SQL Server只读用户创建方案

你遇到的报错是因为AddOrUpdateUserAzure@1市场任务仅支持Windows代理运行,没有做Linux平台兼容,无法在ubuntu-latest托管代理上执行。
以下是可直接在Linux代理上落地的只读用户创建方案,使用SQL Server官方跨平台命令行工具sqlcmd实现:


实现步骤

1. 前置检查

  • Azure SQL Server防火墙已允许Azure托管代理公网IP访问,也可在Pipeline中临时添加当前代理IP到白名单,执行完成后再移除避免暴露风险
  • 数据库管理员账号、密码等敏感信息已存储在Pipeline保密变量或Azure密钥库中,禁止明文硬编码

2. 完整Pipeline任务配置

直接替换原有AddOrUpdateUserAzure@1任务即可:

# 第一步:在Ubuntu代理上安装sqlcmd工具
- task: Bash@3
  displayName: 安装SQL Server命令行工具sqlcmd
  inputs:
    targetType: 'inline'
    script: |
      curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
      curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
      sudo apt-get update
      sudo ACCEPT_EULA=Y apt-get install -y mssql-tools unixodbc-dev
      echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
      source ~/.bashrc

# 第二步:执行SQL创建只读用户
- task: Bash@3
  displayName: 创建SQL Server只读用户
  inputs:
    targetType: 'inline'
    script: |
      # 变量可替换为Pipeline自定义参数/变量
      SQL_SERVER="${{ parameters.sql_server_name }}.database.windows.net"
      DB_NAME="${{ parameters.database_name }}"
      ADMIN_USER="${{ parameters.admin_username }}"
      ADMIN_PWD="${{ parameters.admin_password }}"
      TARGET_USER="${{ parameters.target_readonly_username }}"
      TARGET_PWD="${{ parameters.target_readonly_password }}"

      # 执行SQL逻辑
      sqlcmd -S $SQL_SERVER -d $DB_NAME -U $ADMIN_USER -P $ADMIN_PWD -Q "
        -- 创建服务器登录名
        IF NOT EXISTS (SELECT * FROM sys.sql_logins WHERE name = N'$TARGET_USER')
        CREATE LOGIN [$TARGET_USER] WITH PASSWORD = N'$TARGET_PWD', CHECK_POLICY = OFF;
        -- 创建对应数据库用户
        IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'$TARGET_USER')
        CREATE USER [$TARGET_USER] FOR LOGIN [$TARGET_USER];
        -- 授予只读权限
        ALTER ROLE db_datareader ADD MEMBER [$TARGET_USER];
      " -I

3. 注意事项

  • 如果需使用Azure AD身份验证连接SQL Server,可替换sqlcmd命令的认证参数为对应Azure AD配置即可
  • 密码若包含单引号、$、&等特殊字符,需提前做转义处理避免SQL执行报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:54:05