Как обрабатывать несколько источников данных с учетными данными при развертывании модели AAS через конвейер выпуска Azure DevOPS

У меня есть табличная модель с двумя подключениями к источникам данных. Оба источника данных подключаются к разным серверам (и базам данных) для получения данных для таблиц в модели. В Azure DevOps я создал конвейер выпуска для развертывания файла model.bim на моем сервере анализа Azure с помощью шага «Развертывание табличной базы данных».

На этом этапе вы можете указать «тип источника данных». Поскольку у меня два источника данных, я выбрал «Дополнительно (несколько подключений)». В этом поле в разделе «Дополнительные настройки безопасности источника данных» мне нужно указать учетные данные для каждого источника данных. Если я не сделаю этого и попытаюсь обработать таблицы в модели, я получу ошибку, указывающую, что учетные данные были предоставлены неправильно.

Перед этапом «Развертывание табличной базы данных» у меня в конвейере есть еще две задачи. Один извлекает данные из моего хранилища ключей Azure, а другой представляет собой задачу Azure CLI, которая извлекает сведения о моем подключении к службе. «Развертывание табличной базы данных» — это последний шаг.

Я попробовал следующее в «Расширенных настройках безопасности источника данных»:

[
  {
    "type": "structured",
    "name": "TEST1",
    "connectionDetails": {
      "protocol": "tds",
      "address": {
        "server": "room1.net",
        "database": "Test_db1"
      },
      "authentication": null,
      "query": null
    },
    "credential": {
      "AuthenticationKind": "UsernamePassword",
      "kind": "SQL",
      "Username": "bla1",
      "EncryptConnection": true,
      "Password": "$(DS1_PASSWORD)"
    }
  },
  {
    "type": "structured",
    "name": "TEST2",
    "connectionDetails": {
      "protocol": "tds",
      "address": {
        "server": "room2.net",
        "database": "Test_db2"
      },
      "authentication": null,
      "query": null
    },
    "credential": {
      "AuthenticationKind": "UsernamePassword",
      "kind": "SQL",
      "Username": "bla2",
      "EncryptConnection": true,
      "Password": "$(DS2_PASSWORD)"
    }
  }
]

Я получаю следующую ошибку:

Передан недопустимый объект, ожидается ':' или '}'.

Все перепробовал, прошил

Решение: я хочу обрабатывать таблицы из разных источников данных. Учетные данные, которые я передаю через конвейер выпуска Azure DevOps, должны быть включены в мое развертывание.

Кто может мне помочь? Было бы очень признательно, так как я застрял на этом уже несколько дней.

РЕДАКТИРОВАТЬ

Полный YAML последнего шага, как спросил @Kevin Lu-MSFT.

steps:
- task: liprec.vsts-release-aas.deploy-aas-db.deploy-aas-db@1
  displayName: 'blabla1'
  inputs:
    connectedServiceNameSelector: connectedServiceNameARM
    connectedServiceNameARM: 'ppppp'
    aasServer: 'pppppp.net'
    databaseName: 'test11_tabular'
    loginType: spn
    tenantId: '$(tenantId)'
    appId: '$(servicePrincipalId)'
    appKey: '$(servicePrincipalKey)'
    pathToModel: '$(System.DefaultWorkingDirectory)/aa/Model/test11_Tabular/bin/Model.asdatabase'
    partitionDeployment: deploypartitions
    roleDeployment: deployrolesandmembers
    connectionType: advanced
    datasources: |
      [
        {
          "type": "structured",
          "name": "TEST1",
          "connectionDetails": {
            "protocol": "tds",
            "address": {
              "server": "room1.net",
              "database": "Test_db1"
            },
            "authentication": null,
            "query": null
          },
          "credential": {
            "AuthenticationKind": "UsernamePassword",
            "kind": "SQL",
            "Username": "bla1",
            "EncryptConnection": true,
            "Password": "$(DS1_PASSWORD)"
          }
        },
        {
          "type": "structured",
          "name": "TEST2",
          "connectionDetails": {
            "protocol": "tds",
            "address": {
              "server": "room2.net",
              "database": "Test_db2"
            },
            "authentication": null,
            "query": null
          },
          "credential": {
            "AuthenticationKind": "UsernamePassword",
            "kind": "SQL",
            "Username": "bla2",
            "EncryptConnection": true,
            "Password": "$(DS2_PASSWORD)"
          }
        }
      ]
    overwrite: false

Можете ли вы поделиться более подробной информацией о настройках Release Pipeline? Если вы используете классический конвейер выпуска, вы можете экспортировать определение задачи в формат YAML и поделиться с нами. Это будет полезно для дальнейшего изучения вопроса.

Kevin Lu-MSFT 26.07.2024 10:46

Строка JSON кажется допустимой, но имейте в виду, что специальные символы, кавычки и т. д. в $(DS1_PASSWORD) или $(DS2_PASSWORD) могут сделать ее недействительной. Это также зависит от того, как вы пытаетесь заменить значения. Как упомянул Кевин, отредактируйте свое сообщение и, если возможно, добавьте соответствующую часть конвейера в формате YAML.

Rui Jarimba 26.07.2024 10:55

Я предоставил YAML последнего шага. теперь в моем исходном посте

Abdio68 26.07.2024 10:57
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
8
77
2
Перейти к ответу Данный вопрос помечен как решенный

Другие вопросы по теме