2017-01-01 5 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 계정으로 실행됩니다. 이것은 유일한 차이점이므로 사용 권한 문제 여야합니다.

dacpac은 sysadmin 권한을 가진 사용자가 설치해야합니다. SQL Server 사용자 NT AUTHORITY\SYSTEMDBCreator 역할을 설정하려고 테스트했습니다.

다음 오류 때문에 배포가 실패했습니다.

그러나 진행 방법은 확실하지 않습니다. 나는 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 월에 발표 된 최신 버전으로 해결해야하는 이전 버전의 호스트 에이전트에 대해이 문제가있는 것으로 보입니다.