Запуск 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 SysAdmin плохая идея!

1 ответ

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

powershell.exe -ExecutionPolicy Bypass -File <absolute_path_to_your_script_here>

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

Другие вопросы по тегам