sqlpackage.exe
をAWS CodeDeployによって実行されるスクリプトから実行しようとしています。AWS CodeDeployからsqlpackage.exeを実行すると例外が発生する
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はLocal System
アカウントで実行されているWindowsサービスとして実行されます。このサービスは、コマンドプロンプトでAdministrator
アカウントで実行されます。これは唯一の違いですので、これはアクセス許可の問題でなければならないと思います。
sysadmin
特権を持つユーザーがdacpacをインストールする必要があるようです。 SQL ServerユーザーNT AUTHORITY\SYSTEM
をロールとしてDBCreator
に設定しようとしました(テストとして)。
展開が失敗し、次のエラーが発生しました。
しかし、私はどのように進めるのかは分かりません。私はそれを作ると推測しているNT AUTHORITY\SYSTEM
SysAdmin
は悪い考えです!