【问题标题】:Azure devops task AddOrUpdateUserAzure@1 failing ubuntu-latest hosted agentAzure devops 任务 AddOrUpdateUserAzure@1 失败 ubuntu-latest 托管代理
【发布时间】:2021-10-31 16:33:58
【问题描述】:

在 Azure 管道中使用 AddOrUpdateUserAzure@1 任务通过 Microsoft 托管代理 ubuntu-latest 创建 Microsoft SQL Server 数据库用户失败,并显示如下错误:

  - task: AddOrUpdateUserAzure@1
displayName: DB user creation
inputs:
  ConnectedServiceNameSelector: 'ConnectedServiceNameARM'
  ConnectedServiceNameARM: ${{ parameters.arm_service_connection }}
  serverName: test-sql-server'
  databaseName: 'test-sql-db'
  userName: 'admin'
  userPassword: 'admin_password'
  targetUserName: 'readonly-user'
  targetUserPassword: 'password'
  queryTimeout: '30'

错误

[错误] 当前操作系统无法运行此任务。这通常意味着该任务仅针对 Windows 编写。例如,为 Windows 桌面 PowerShell 编写。

请分享您的建议,我们可以使用 linux 代理在 Microsoft SQL Server 中创建只读用户

【问题讨论】:

    标签: azure-devops azure-sql-database azure-pipelines azure-pipelines-yaml azure-pipelines-tasks


    【解决方案1】:

    此问题是由 Azure Powershell 版本引起的。

    我建议你尝试其他版本的 powershell。试用 Azure PowerShell 任务版本 4.157.4。

    参考这个 github 链接 - https://github.com/microsoft/azure-pipelines-tasks/issues/11283

    【讨论】:

    • 我正在使用任务:AddOrUpdateUserAzure@1 来创建用户,而不是相同的 power shell 脚本
    【解决方案2】:

    使用 ubuntu 镜像中的 sqlcmd 实用程序执行 sql 命令以创建 sql 登录,然后在数据库中创建用户并将角色绑定到用户

    - task: AzureCLI@2
        displayName: SQL Users
        inputs:
            azureSubscription: $(arm_service_connection)
            scriptType: bash
            scriptLocation: inlineScript
            inlineScript: |
                password=$(cat /dev/urandom | tr -dc 'A-Za-z0-9_!@#$%^&*()\-+=' | head -c16)
                # db user login creation
                sqlcmd -S $(servername).database.windows.net \
                  -U $(resource_prefix)-master \
                  -P $(sql_admin_password) -I \
                  -Q "CREATE LOGIN [$(new_db_login_name)] WITH PASSWORD= '$password';"
                # db user creation
                sqlcmd -S $(servername).database.windows.net \
                  -d $(databasename) \
                  -U $(admin_username) \
                  -P $(sql_admin_password) -I \
                  -Q "CREATE USER [$(new_username)] FOR LOGIN [$(new_db_login_name)] WITH DEFAULT_SCHEMA = [dbo];"
                # db user role assignment
                sqlcmd -S $(servername).database.windows.net \
                  -d $(databasename) \
                  -U $(admin_username) -P $(sql_admin_password) -I \
                  -Q "ALTER ROLE db_datawriter ADD MEMBER [$(new_username)];"
    

    【讨论】:

      猜你喜欢
      • 2020-01-01
      • 2019-11-06
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 2021-02-20
      • 2021-07-28
      相关资源
      最近更新 更多