【发布时间】:2018-08-13 15:14:27
【问题描述】:
我为导入作业编写了一个小的 Rust 脚本。我通过Execute process task将脚本执行添加到SSIS包中,并设置了正确的工作目录。使用调试器,脚本可以正常工作,就像正常执行时一样,例如通过cmd 或 PowerShell。
当我在 SSMS 中作为代理作业启动作业时,包失败并显示
进程退出代码为“-1073741515”,而预期为“0”。
我尝试了什么
- 用一个非常基本的 Rust 脚本替换该脚本,该脚本仅将一行写入工作目录中的文件,以排除脚本以某种方式出现恐慌的可能性,但仍然没有。
- 脚本使用
i686-pc-windows-msvc工具链编译。对于 64 位,该脚本在服务器上根本不起作用。 - 执行和工作目录的权限看起来不错。
Full control用于两个文件夹。
由于执行在服务器上有效,我认为这很可能是权限问题,但我终其一生都无法弄清楚出了什么问题。
【问题讨论】:
-
当您说“在 SSMS 中启动作业”时,您是指启动代理作业还是从 SSISDB 运行包?
-
那个错误代码是
c0000135,STATUS_DLL_NOT_FOUND。这通常不是权限问题,而是路径或位数问题。如果所有其他方法都失败并且从上下文中不清楚,则运行 Process Monitor 可以为您提供失败的确切负载。 -
我刚刚用一些附加信息编辑了我的问题:“在 SSMS 中开始工作”是指开始代理工作。我用一个非常基本的 Rust 脚本替换了原始脚本,该脚本只是创建一个文件并在其中写入“测试”。同样,此脚本在服务器上运行良好,但在作业中却不行。
-
我猜它要么与您配置为运行 SSIS 作业的代理帐户有关,要么您应该在 32 位模式下运行它。根据 pkg 中发生的情况,可能需要后者
-
嗯,据我所知,在作业步骤中使用 32 位运行时没有任何作用。
标签: sql-server ssis rust ssms