【问题标题】:Execute process task fails to execute Rust script in job执行流程任务无法在作业中执行 Rust 脚本
【发布时间】: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


【解决方案1】:

好的,问题确实出在运行该作业的默认 SQL Server 服务代理-帐户上。如果我使用代理帐户运行作业,它运行良好。

我将不得不查看服务代理的配置,但在那之前,它是代理帐户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多