我正在尝试使用 dtutil 在远程集成服务器上运行 ssis 包,该包在使用 cmdshell 的存储过程中被调用。我现在这不是运行 ssis 包的最佳方式,但它是我继承的。因此,对新服务器进行新部署时,我为 cmdshell 创建了一个代理帐户以在其下运行,该帐户不是域上的管理员帐户。我在我的 sql 框中运行了以下脚本
GRANT EXECUTE ON xp_cmdshell TO [domain\Account which will call the SP which runs the cmdshell];
EXEC sp_xp_cmdshell_proxy_account null
EXEC sp_xp_cmdshell_proxy_account 'domain\non admin account which the cmdshell will run as','xxxxxxx'
SP 内的代码
select @DtexecParams = 'dtexec /sq xxSSIS Packagexx /ser xxremoteserver where the package isxx'
--
-- I set other connections and local parameters the package uses
--
exec @rc = xp_cmdshell @DtexecParams
现在,在包所在的远程服务器上,我添加了 cmdshell 代理用作 ssis 操作员和 msdb 数据库上的数据读取器的域帐户。但是当我运行 SP 来调用包时,我得到了以下错误返回
由于错误 0x80131534,无法加载包“xxxxxxxx”。说明:未找到说明来源:
这并没有告诉我太多,但是当我以系统管理员用户身份运行 sp 时一切正常,所以它更有可能是权限问题。我已将代理帐户用户添加到本地策略“作为批处理作业登录”,但我仍然收到错误消息。