我们使用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
答案 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相同,因此它需要您每次输入原始的连接字符串值。
仅根据您的方案和实际考虑选择其中一种。