Обновите строку таблицы соединений SSAS во время выпуска конвейера azure - PullRequest
0 голосов
/ 18 февраля 2020

Мы внедряем экземпляр Tabular 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"
    }
}

Есть ли более вменяемый / устойчивый подход?

Смежный вопрос: Непрерывная интеграция и табличное развертывание SSAS в Azure Службы аналитики

1 Ответ

0 голосов
/ 19 февраля 2020

Как насчет использования одного расширения с именем Заменить текст в исходных файлах .

Он содержит 2 метода, и первый - заменить шаблоном поиска.

Поиск начала текста

Как видно из описания, в каждой строке исходного кода вы ищете текст, начинающийся с того, что введено здесь.

Пример строки -> [assembly: AssemblyInformationalVersion ("1.1.1.1")]

Так что, если вы введете 'AssemblyInformationalVersion ("', она будет искать строку, содержащую этот текст и останавливающуюся в конце перед версия 1.1.1.1.

Поиск конца текста

Как указано в описании, задача ищет «Конец текста», но только в тех строках, где Начало текста уже нашло результат.

Пример строки -> [assembly: AssemblyInformationalVersion ("1.1.1.1")]

Так что, если вы введете "")], он будет искать позиция только в конце версии 1.1.1.1.

* 10 28 *

Также вы можете использовать другое задание Replace In Files Text By Text. Логика его работы c такая же, как и замена A на B напрямую, поэтому вам нужно каждый раз вводить исходное значение строки подключения.

Только на основании вашего сценария и ваших реальных намерений выбрать один из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...