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\SYSTEMのSysAdminは悪い考えだと思います!