WedX - журнал о программировании и компьютерных науках

Конвейер Azure DevOps для проекта SSDT не может найти переменные, когда ему не нужно создавать объект

Я использую Azure Devops для развертывания моего проекта SSDT. Я пытаюсь обновить свое хранилище данных SQL Azure, где у меня есть DATABASE SCOPED CREDENTIAL и EXTERNAL DATA SOURCE.

Я нашел эту статью и выполнил эти шаги. https://techcommunity.microsoft.com/t5/azure-synapse-analytics/how-to-securely-manage-load-credentials-with-ssdt-azure-key/bc-p/1397979 < / а>

В моем конвейере выпуска у меня есть этот параметр для развертывания моего проекта SSDT. Как видите, я использую значения из своего хранилища ключей Azure.

- task: AzureKeyVault@1
  inputs:
   azureSubscription: '<My Azure Subscription>'
   KeyVaultName: '<My Key Vault>'
   SecretsFilter: '*'
...
- task: SqlAzureDataWarehouseDacpacDeployment@1
  inputs:
    azureSubscription: '<My Azure Subscription>'
    AuthenticationType: 'server'
    ServerName: 'ABC.database.windows.net'
    DataWarehouse: '$(SynapseName)'
    SqlUsername: '$(SynapseSQLUsername)'
    SqlPassword: '$(SynapseSQLPassword)'
    deployType: 'DacpacTask'
    DeploymentAction: 'Publish'
    DacpacFile: 'SQL_ASynapse\bin\Release\SQL_ASynapse.dacpac'
    AdditionalArguments: '/p:IgnoreAnsiNulls=True /p:IgnoreComments=True /v:DatabaseScopeCredentialSecret=$(DatabaseScopeCredentialSecret) /v:DatabaseScopeCredentialIdentity=$(DatabaseScopeCredentialIdentity) /v:ExternalDataSourceMarineTrafficLocation=$(ExternalDataSourceMarineTrafficLocation)'
    IpDetectionMethod: 'AutoDetect'

Я передаю три значения для трех моих переменных в двух сценариях удара.

$(DatabaseScopeCredentialSecret)
$(DatabaseScopeCredentialIdentity) 
$(ExternalDataSourceMarineTrafficLocation)

У меня есть код ниже в двух отдельных файлах SQL.

ADLSCredential.sql:

CREATE MASTER KEY;
GO
CREATE DATABASE SCOPED CREDENTIAL ADLSCredential
WITH
    IDENTITY = '$(DatabaseScopeCredentialIdentity)',
    SECRET = '$(DatabaseScopeCredentialSecret)'
;

AzureDataLakeStoreMarineTraffic.sql:

CREATE EXTERNAL DATA SOURCE AzureDataLakeStoreMarineTraffic
WITH (
    TYPE = HADOOP,
    LOCATION='$(ExternalDataSourceMarineTrafficLocation)', 
    CREDENTIAL = ADLSCredential
);

Когда у меня нет этих объектов в моем DW (Synapse), мой конвейер может находить значения из Azure Key Vault, назначать их параметрам и создавать оба объекта, но в следующий раз у меня будет ошибка ниже.

 ##[error]*** Could not deploy package.
 ##[error]Warning SQL72013: The following SqlCmd variables are not defined in the target scripts: DatabaseScopeCredentialSecret DatabaseScopeCredentialIdentity ExternalDataSourceMarineTrafficLocation.
Error SQL72014: .Net SqlClient 

Кажется, что мне не нужно запускать эти сценарии, передавая значения моим параметрам, у SQLCMD есть проблемы с поиском этих переменных, потому что он их не создавал.

Есть ли способ где-то иметь общедоступную переменную или сказать SQLCMD не передавать значения в течение секундного времени?


  • Используете ли вы развертывание хранилища данных SQL Azure расширение? Если развернуть локально, каков результат? 18.05.2020
  • @ CeceDong-MSFT Да, я использую развертывание хранилища данных SQL Azure. Что вы хотите сказать при локальном развертывании?!? 19.05.2020
  • Я имею в виду, если вы выполняете развертывание из командной строки локально (не используете DevOps), каков результат? 20.05.2020

Ответы:


1

Я нашел проблему, которая у меня была.

Я забыл создать переменные в проекте SSDT. После их создания все работает хорошо.

введите здесь описание изображения

21.05.2020
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]