我有一个用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
但是,如果我本地以/400的速度在本地运行相同的命令,则可以正常运行。我们已经检查了权限。还有什么可能导致命令失败?如何获得有关错误的更多信息,或进行故障排除?
edit :当我们迁移服务器(.NET服务运行)从Windows Server 2003到Windows Server 2008时,此问题(以及许多其他问题)出现了。
<。如何获得有关错误的更多信息,或进行故障排除?
第一件事是验证 ibm as/400 server [什么OS版本发布和修改级别,技术刷新(TR)级别(如果IBM I ),全部省略了PTF级别。即在将要验证命令验证命令功能的服务器上,找到活动服务器作业,其中CPF3342在日志中仍然可见。
。第二件事是获取船上的流传杂志,显示CPF3342的全部详细信息[可能是可能相关的任何前面消息]。例如,如果该消息实际上不是该消息,也不是由预期的程序QSPCPYF发送的,那么调查的方向可能会改变。显然所示的是客户端呈现的内容,而不是服务器上的内容。我认为使用USENGLISH格式是"找不到Job&amp; 4/&amp;未找到。"为此格式化" CPF3342-找不到工作&amp; 5/&amp; 4/&amp; 3"是可疑的。
确保与客户的请求最合适的比较:•要执行相同请求的本地用户应与被发现正在为客户端请求提供服务的活动作业的当前用户•本地用户应建立与正在为客户端请求服务的活动作业相同的系统库列表
如果此类事件复发,甚至相同的事件持续存在,则使用相同的接口再次验证重新创建[即条件失败持续],并再次验证命令行请求成功[即确认了规避的确认,可以在命令行中执行相同的请求。根据我的早期评论,首先通过查找登录CPF3342的活动作业来确保同一服务器。紧接着:
•收集复制寄生文件(CPYSPLF)请求的作业跟踪;对于失败情况,请审查任何例外中断条件(或没有消息作为随附的跟踪数据),该条件是在发行MSG CPF3342的程序流之前的。
•查看任何T-AF的审核日志或任何奇怪的意外事件在非常接近失败请求时出现;自连接到服务器之前,应该已经建立了扩展的审核。
•将失败情况的数据收集与成功处理的相同数据进行对比。
尽管症状(如略微描述,没有完整的流传信息),命令外观的可能性似乎是遥远的,但该痕迹会揭示是否在任何一种情况下命令被命令出口点截获;可以使用注册信息(WRKREGINF)的工作来审查存储库中的任何QIBM_QCA*条目,以分别对这些退出程序进行分别审查(而不是在跟踪中查找任何退出程序),以查看什么出口程序可能会影响CL命令请求。但是iirc trace-data显示了调用了哪个命令,因此跟踪还可以揭示是否解决了不同的 *cmd对象的不合格命令请求。