在天蓝色管道发布期间更新 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 表格连接字符串的主要内容,如果未能解决你的问题,请参考以下文章