IBM i(系统i)V7R1升级导致ODBC连接上的光标未打开错误

约翰·库恩斯

多年来,至少有8年,我们公司每天都在运行一个从未失败过的流程。客户端方面没有任何变化,但是最近我们在System i上升级到了V7R1。旧过程的第一次运行失败,并向客户端报告了“ Cursor not open”(光标未打开)消息,这也就是作业日志中的全部内容。我有时会看到错误-501,SQLSTATE 24501。

我同时参与了IBM和DataDirect(ODBC驱动程序的提供者)。IBM表示这是一个客户端问题,DataDirect翻阅了日志,发现在从游标请求下一个记录块时会发生此错误。他们没有看到任何迹象表明System i向客户端发出了游标已关闭的警报。

在故障排除中,我注意到ODBC驱动程序具有WITH HOLD选项,默认情况下已选中该选项。如果我取消选中它,此特定问题将消失,但会引入另一个更为严重的问题(无限循环)。

没有一个通用的主题会导致这些错误,我看到的唯一导致此错误的原因是在循环通过相当大的结果集时进行了一些处理。它似乎与时间,特定表或表类型无关。外部循环有时是具有许多数据类型的大表,有时是只有CHAR(10)和CHAR(8)数据类型的小表。

我真的不希望在这里找到答案,因为这是一个非常深奥的情况,但是总有一些希望。

通过让我们应用PTF使数据库级别达到36,IBM已经解决了其他问题。我绝不是System i专家,而是Java程序员,必须处理与Java完全无关的此问题。

谢谢

约翰·库恩斯

这适用于可能遇到类似问题的其他任何人。原来是QRWTSRVR代码中的错误导致了此问题。驱动程序在一个作业中打开了多个连接,并且至少有两个连接使用了相同的名称作为游标。一旦关闭了这些游标之一,QRWTSRVR就会错误地尝试使用关闭的游标并返回错误。这是PTF求职信中的描述:

APAR SE62670修复的问题的描述:

    A QRWTSRVR job with 2 cursors named C01 takes a MSGSQL0501
error when trying to fetch from the one that is open. The DB2
code is trying to use the cursor which is pseudo closed.

PTF SI57756解决了该问题。我不知道该PTF是否会普遍发布,但是如果您因类似问题而找到此帖子,希望这将有助于您更正它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章