Eu tenho um projeto SSDT que é implantado no banco de dados SQL do Azure. Recentemente eu adicionei uma tabela externa. Isso exigia uma fonte de dados externa da seguinte forma:
CREATE EXTERNAL DATA SOURCE [data_warehouse]
WITH (
TYPE = RDBMS,
LOCATION = N'mydb.database.windows.net',
DATABASE_NAME = N'MainDW',
CREDENTIAL = [dw_reader]
);
Quando eu importo isso para o meu .sqlproj, ele reclama que a credencial não está lá e, quando eu adiciono, ele reclama que a chave mestra não está lá. O problema é que não quero armazenar esses segredos no projeto SSDT. Como armazeno dummys ou padrões que podem ser substituídos e recuperados do cofre de chaves do Azure ou outro método de armazenamento de segredos no Azure Decops?
Depois de experimentar, parece que qualquer tipo de segredo no SSDT só é usado quando o objeto é criado, não atualizado.
Portanto, se um sqlproj contiver
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password A';
, e nenhuma chave mestra existir, a chave mestra será criada com essa senha. No entanto, se um for executado posteriormenteALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = 'dsjdkflJ435907NnmM#sX003';
no banco de dados e, em seguida, reimplantar o sqlproj no banco de dados, ele não gerará novamente a chave mestra.