在 DevOps 中修改 Azure Analysis Services 数据库角色

Amending Azure Analysis Services Database Roles in DevOps

我正在尝试在 Azure DevOps 中为 Azure Analysis Services 数据库部署配置 CI/CD 管道。

部署 Model.bim 文件非常简单,使用已经可用的 'Azure Analysis Service Deployment' 任务。

但是,分配给 AAS 数据库中角色的 AD 组会根据部署是测试还是生产而变化。我一直在寻找 运行 某种 PowerShell 来实现这一点,但是搜索这个特定场景的时间没有结果。当前Az.AnalysisServices似乎没有超出其范围内的实际服务器:

https://docs.microsoft.com/en-us/powershell/module/az.analysisservices/?view=azps-3.1.0

上述文档中有一个使用标准 SQL Powershell 命令的参考,但是它实际上没有任何用于 AAS 的示例脚本,甚至没有任何基于云的解决方案。

不知道有没有人成功过?如果需要,我愿意连接到 VM 和 运行ning 脚本,但首选完全基于云的解决方案。

也欢迎 TMSL 解决方案。

为了后代,我使用了 Invoke-ASCmd 和一个 createOrReplace 语句,这实现了我需要做的事情。

这涉及创建连接凭据(我使用的是服务帐户),创建包含 createOrReplace 语句的参数,然后针对 AAS 执行它:

$password = ConvertTo-SecureString “<password>” -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential (“<user>@<domain>”, $password)

Connect-AzAccount -Credential $Cred

$TMSLCommand = @"

{
  "createOrReplace": {
    "object": {
      "database": "<AAS Database>",
      "role": "Read"
    },
    "role": {
      "name": "Read",
      "modelPermission": "read",
      "members": [
        {
          "memberName": "<ad group object id/user>@<tenant id/domain>",
          "identityProvider": "AzureAD"
        }
      ]
    }
  }
}


"@    

Invoke-ASCmd -Server "<AAS Server Name>" -Database "<AAS Database>" -Query $TMSLCommand -Credential $Cred;