2017-01-01 6 views
0

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\SYSTEMSysAdminは悪い考えです!

答えて

0

CodeDeploy Host Agent Serviceは、NT AUTHORITY \ SYSTEMおよびBUILTIN \ Administrators権限を持つLocalSystemユーザーとして実行されます。あなたはあなたの展開パッケージ内のフォルダにそれを入れている場合appspec.ymlファイルとともにルートに実行可能ファイルを入れて試すことができます

powershell.exe -ExecutionPolicy Bypass -File <absolute_path_to_your_script_here> 

: これはCodeDeployエージェントがスクリプトを実行する方法です。 これは、2017年3月にリリースされた最新バージョンで解決する必要があるホストエージェントの古いバージョンでこの問題が発生しているように思われます。

関連する問題