sqlpackage.exe
AWS 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
は悪い考えだと思います!