在天蓝色管道发布期间更新SSAS表格连接字符串

时间:2020-02-18 12:44:02

标签: azure-pipelines ssas-tabular

我们使用Microsoft.AnalysisServices.Deployment.exe.asdatabase文件,将Tabular SSAS实例部署为本地Azure构建和发布管道的一部分。

我正在尝试找出在发布阶段更新(关系数据库)数据源连接字符串的方法。

我能找到的大多数解决方案都使用了SSIS,但我们没有,所以我强烈不希望在此任务中介绍它。

我可以看到在.asdatabase文件中定义了连接:

"dataSources": [
  {
    "name": "sourceDB1",
    "connectionString": "Data Source=xxxx",
    ...
  },
  {
    "name": "sourceDB2",
    ...
  }
 ]

我使用此powershell脚本更新连接字符串:

if($args[0] -eq $null)
{
    Write-Host "Updates .asdatabase connection string. Parameters: %source name% %source connection string%"
}
else{

    $source=$args[0]
    $connectionstring=$args[1]

    write-host "updating "  $source  " connection string..." 

    $a = Get-Content 'Model.asdatabase' -raw | ConvertFrom-Json
    $a.model.datasources | % {if($_.name -eq $source){$_.connectionString=$connectionstring}}
    $a | ConvertTo-Json -depth 100| set-content 'Model2.asdatabase'

    If ($?)
    {
        write-host "updated successfully"
    }
}

还有一种更理智/可持续的方法吗?

相关问题:Continuous integration and Deploy SSAS tabular to Azure Analysis Services

1 个答案:

答案 0 :(得分:0)

考虑使用一个扩展名为Replace Text in Source Files的扩展名。

它包含2种方法,第一种是用搜索模式替换。

搜索文本开头

正如描述所述,您正在查找源代码的每一行 以此处输入的内容开头的文本。

示例行-> [assembly:AssemblyInformationalVersion(“ 1.1.1.1”)]

因此,如果您输入'AssemblyInformationalVersion(“',它将寻找一个 包含该文本的行,并停在该行之前的末尾 版本1.1.1.1。

搜索文本结尾

正如描述所述,任务正在寻找“文本结尾”,但 仅在“文本开始”已经找到结果的行上。

示例行-> [assembly:AssemblyInformationalVersion(“ 1.1.1.1”)]

因此,如果您输入'“)]',它将在位置末尾寻找位置 版本1.1.1.1。


此外,您可以使用其他任务Replace In Files Text By Text。它的工作逻辑与直接用B替换A相同,因此它需要您每次输入原始的连接字符串值。

仅根据您的方案和实际考虑选择其中一种。