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

Posted

技术标签:

【中文标题】在天蓝色管道发布期间更新 SSAS 表格连接字符串【英文标题】:Update SSAS Tabular connection string during azure pipeline release 【发布时间】:2020-02-18 12:44:02 【问题描述】:

我们正在部署表格 SSAS 实例作为本地 azure 构建和发布管道的一部分,使用 Microsoft.AnalysisServices.Deployment.exe.asdatabase 文件。

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

我能找到的大多数解决方案都使用 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

【问题讨论】:

你好,朋友,请问这个状态怎么样?免费分享您的评论或以下任何问题:-) 嗨 Merlin,感谢您的“替换文本”扩展建议。现在我使用上面的 powershell 脚本,它解析 json 更安全,与直接替换字符串相反。我仍然更喜欢更清洁/更可靠的方法,但还没有找到。 【参考方案1】:

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

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

搜索文本开头

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

示例行 -> [程序集:AssemblyInformationalVersion("1.1.1.1")]

所以如果你输入 'AssemblyInformationalVersion("' 它会寻找一个 包含该文本的行并在 版本 1.1.1.1。

搜索文本结尾

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

示例行 -> [程序集:AssemblyInformationalVersion("1.1.1.1")]

因此,如果您输入 '")]',它将查找位于末尾的位置 版本 1.1.1.1。


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

只是根据您的场景和您的实际考虑选择其中之一。

【讨论】:

以上是关于在天蓝色管道发布期间更新 SSAS 表格连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

实时 SSAS 表格连接的 Power BI 网关问题

从 SSAS 表格创建 Power View 工作表时出错

来自 Python 的 SSAS 连接

SSAS:使用当前用户对 SQL 数据库进行 DirectQuery

SSAS 表格,处理维度空白值

尝试发布 SSAS 表格模型时出现 DevOps 错误