web-dev-qa-db-ja.com

DATABASE SCOPED CREDENTIALまたはMASTER KEYシークレットを公開せずに、CREATE EXTERNAL DATA SOURCEをSSDTプロジェクトに保存します。

Azure SQL DBにデプロイするSSDTプロジェクトがあります。最近、外部テーブルを追加しました。これには、次の外部データソースが必要です。

CREATE EXTERNAL DATA SOURCE [data_warehouse]
    WITH (
    TYPE = RDBMS,
    LOCATION = N'mydb.database.windows.net',
    DATABASE_NAME = N'MainDW',
    CREDENTIAL = [dw_reader]
    );

これを.sqlprojにインポートすると、資格情報が存在しないというメッセージが表示され、さらに追加すると、マスターキーが存在しないというメッセージが表示されます。問題は、これらの秘密をSSDTプロジェクトに保存したくないことです。 AzureキーボルトまたはAzure Decopsにシークレットを保存するその他の方法からオーバーライドして取得できるダミーまたはデフォルトをどのように保存しますか?

7
Justin Dearing

実験後、SSDTのあらゆる種類のシークレットは、オブジェクトが作成されたときにのみ使用され、更新されないようです。

したがって、sqlprojにCREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password A';が含まれていて、マスターキーが存在しない場合、マスターキーはそのパスワードで作成されます。ただし、後でデータベースでALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = 'dsjdkflJ435907NnmM#sX003';を実行してから、sqlprojをデータベースに再デプロイしても、マスターキーは再生成されません。

1
Justin Dearing