从AWS CodeDeploy运行sqlpackage.exe会引发异常



我正在尝试从AWS CodeDeploy执行的脚本运行sqlpackage.exe

sqlpackage命令从本地CMD提示中运行良好,当登录为管理员时,但在作为编码eploy管道的一部分时不运行。

发生以下错误:

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 AUTHORITYSYSTEM设置为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 AUTHORITYSYSTEM成为SysAdmin是个坏主意!

编码EPLOY主机代理服务以当地系统用户运行,该服务应具有NT Authority System和Indualin Administrators特权。这就是编码eploy代理执行您的脚本的方式:

powershell.exe -ExecutionPolicy Bypass -File <absolute_path_to_your_script_here>

,如果将其放在部署软件包中的文件夹中,则可以尝试将可执行文件与appspec.yml文件一起放在根上。话虽这么说,我们似乎已经使用了较旧版本的主机代理商来解决这个问题,该版本应在2017年3月发布的最新版本中解决。

相关内容

  • 没有找到相关文章

最新更新