2017-01-01 17 views
0

Я пытаюсь запустить sqlpackage.exe из сценария, выполняемого AWS CodeDeploy.Запуск 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. Это единственное различие, поэтому я думаю, что это должно быть проблемой разрешения.

Похоже, что dacpac должен быть установлен пользователем с привилегиями sysadmin. Я попытался (как тест) установить для пользователя 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 a SysAdmin - плохая идея!

ответ

0

Служба агента хоста AgentDeploy запускается как пользователь LocalSystem, у которого должны быть привилегии NT AUTHORITY \ SYSTEM и BUILTIN \ Administrators. Это как агент CodeDeploy выполняет сценарий:

powershell.exe -ExecutionPolicy Bypass -File <absolute_path_to_your_script_here> 

Вы можете попробовать положить исполняемый файл в корневом каталоге вместе с appspec.yml файлом, если вы кладете его в папке в пакете развертывания. Это говорит о том, что эта проблема связана со старыми версиями хост-агента, которые должны быть решены с использованием последней версии, выпущенной в марте 2017 года.