【问题标题】:IBM i (AS/400) command works locally but not remotelyIBM i (AS/400) 命令在本地工作,但不能在远程工作
【发布时间】:2015-05-08 15:08:30
【问题描述】:

我有一个用 VB.NET 2.0 编写的 Windows 服务,它连接到 IBM AS/400 服务器。查询工作正常,但是当我尝试执行诸如删除假脱机文件之类的操作时,我得到了错误。例如:

CPYSPLF FILE(PO630A) TOFILE(MPLCDATPAR/PO630APF) JOB(083064/ARUSER/POASYNCMON) SPLNBR(80) MBROPT(*REPLACE)

使用 ExecuteNonQuery 运行此命令会产生:

CPF3342 - Job not found 083064/ARUSER/POASYNCMON

但是,如果我在 AS/400 中本地运行相同的命令,它就可以正常工作。我们已经检查了权限。还有什么可能导致命令以这种方式失败?如何获取有关错误的更多信息,或解决此问题?

编辑:当我们将服务器(运行 .NET 服务的地方)从 Windows Server 2003 迁移到 Windows Server 2008 时,出现了这个问题(以及许多其他问题)。

【问题讨论】:

    标签: oledb .net-2.0 ibm-midrange


    【解决方案1】:

    我如何才能获得有关错误的更多信息,或解决此问题?

    首先要验证 IBM AS/400 服务器 [什么操作系统版本发布和修改级别,技术更新 (TR) 级别(如果改为 IBM i ), 累积 PTF 级别全部省略。?.?] 用于连接的是 同一服务器 用于执行命令行调用;即在将进行命令行调用以验证命令是否正常运行的服务器上,找到 CPF3342 在日志中仍然可见的活动服务器作业

    要做的第二件事是获取显示 CPF3342 的完整详细信息的假脱机作业日志 [以及可能相关的任何先前消息]。例如,如果该消息实际上不是该消息,或者不是由预期的程序 QSPCPYF 发送的,那么调查方向可能会立即改变。显示的显然是客户端显示的内容,而不是来自服务器作业日志的内容;我认为美国英语格式是“找不到工作 &5/&4/&3”。格式“CPF3342 - Job not found &5/&4/&3”是可疑的。

    为确保与来自客户端的请求进行最适当的比较: • 登录以执行相同请求的本地用户应该是与发现正在为客户端请求提供服务的活动作业的当前用户相同的用户 • 本地用户应建立与服务于客户端请求的活动作业相同的系统库列表

    如果此类事件再次发生或即使相同事件仍然存在,则再次验证是否仍然可以使用相同的界面重新创建 [即条件\失败仍然存在]并再次验证命令行请求是否成功[即确认规避,相同请求可以在命令行中执行];根据我之前的评论,首先通过找到记录 CPF3342 的活动作业来确保 同一服务器。紧接着:

    • 为复制假脱机文件 (CPYSPLF) 请求收集作业跟踪;对于失败的情况,请检查在发出 msg CPF3342 的程序流之前是否存在任何异常\中断条件[带有或不带有作为伴随跟踪数据的消息]。

    • 在非常接近失败请求的时间查看任何 T-AF 或任何奇怪\意外的审计日志;在连接到服务器之前就应该建立广泛的审计。

    • 将失败案例的数据收集与从成功处理中获取的相同数据进行对比。

    尽管症状 [如简单描述,没有完整的作业日志] 命令退出的可能性似乎很遥远,但跟踪将显示任一场景中的命令是否被命令退出点拦截;对于任何退出程序,可以单独查看这些 [而不是查看跟踪],使用注册信息工作 (WRKREGINF) 来查看存储库中的任何 QIBM_QCA* 条目,以了解哪些退出程序可能会影响 CL 命令请求。但是 IIRC 跟踪数据显示调用了哪个命令,因此跟踪也会显示不合格的命令请求是否解析为不同的 *CMD 对象。

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多