Запуск 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 года.