1

sqlpackage.exeAWS CodeDeploy によって実行されるスクリプトから実行しようとしています。

コマンドはsqlpackage、管理者としてログインしている場合はローカルの CMD プロンプトから正常に実行されますが、CodeDeploy パイプラインの一部として呼び出された場合は実行されません。

次のエラーが発生します。

An unexpected failure occurred: DacInstance with the specified instance_id does not exist..

    Unhandled Exception: System.Data.SqlClient.SqlException: DacInstance with the specified instance_id does not exist.
       at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

データベースに接続できないようです。

CodeDeploy は、アカウントで実行される Windows サービスとして実行されLocal Systemます。これが機能するコマンド プロンプトは、アカウントで実行されAdministratorます。これが唯一の違いなので、これは権限の問題に違いないと思います。

sysadmin特権を持つユーザーが dacpac をインストールする必要があるようです。(テストとして) SQL Server ユーザーNT AUTHORITY\SYSTEMが の役割を持つように設定しようとしましたDBCreator

その後、デプロイは次のエラーで失敗しました。

The database settings cannot be modified. You must be a SysAdmin to apply these settings.
The database settings cannot be modified. You must be a SysAdmin to apply these settings.
An error occurred while the batch was being executed.
Updating database (Failed)

ただし、どのように進めればよいかわかりません。を作るNT AUTHORITY\SYSTEMSysAdminは悪い考えだと思います!

4

1 に答える 1