将我们的IBM System i(也称为i5 / OS或AS / 400)从V5R4升级到V7R1后,我们使用ODBC连接到DB2的一个应用程序失败,并出现以下错误:
Error Code: 69899
SQLSTATE: S1000
[IBM] [System i Access ODBC Driver] [DB2 for i5/OS] PWS0005
Error occurred in the database host server code.
症状是:
在While / Wend循环中声明了CURSOR,然后打开,执行fetch并关闭。
如果在任何迭代中游标不检索任何行,则在下一次迭代中,当您尝试打开游标时声明游标(使用不同的SQL查询)时会发生错误。
首先,我们将ODBC驱动程序更新为可用的最新版本,但问题仍然存在。
因为我们需要一个紧急的解决方案,我通过预先选择来确定光标是否会返回行来解决问题,否则跳过该迭代,这解决了现在的问题,但似乎不是一个非常优雅的解决方案。 / p>
知道如何获取有关主机上发生的错误的更多信息吗?
非常感谢你。
答案 0 :(得分:4)
一般来说,如果服务器端代码中发生错误,您应该致电IBM支持并报告。他们会询问您是否处于最新状态,可能是最新的数据库组PTF。
服务器在名为QZDASOINIT的作业中运行ODBC连接。由于系统可能存在许多联系,因此可能存在许多QZDASOINIT作业。要查找您的,请转到终端会话并WRKOBJLCK MYPROFILE *USRPRF
。您将看到一个与您的用户个人资料一起运行的作业列表。其中至少有一个是您正在寻找的QZDASOINIT工作。使用选项5查看作业,然后使用选项10查看作业日志。按F10查看详细消息,按F18转到底部(最近)条目。
如果错误严重到服务器作业异常终止,则不会锁定您的用户配置文件。而是使用WRKSPLF
转到假脱机的作业日志。
select * from qrecovery.qsq901s;
可以查看任何SQLCODE -901错误。
答案 1 :(得分:0)
确保您已安装最新版本的System I Access
的最新修订包答案 2 :(得分:0)
之前我遇到过这个错误,它是由连接字符串中的语法错误引起的。这个设置在较旧版本的操作系统中无关紧要,在较新版本中更为重要,但并未导致连接本身失败,因此难以追踪。
例如:端口号码:8471有拼写错误并且是Porte Number:8471很难发现但是一旦发现,它就解决了我的问题。基本上,通过这部分连接的一切都被忽略了。
答案 3 :(得分:0)
想要为此问题添加另一种解决方案。在升级之后和/或升级期间,系统上存在的SQL包会损坏。您必须在升级后删除这些包。这将摆脱旧包,并允许系统在新的OS版本级别重新创建包。删除SQL包时,某些连接/作业可能会锁定这些包,因此您可能必须关闭主机服务。使用DLTSQLPKG命令执行删除操作。在v7r2及更高版本中,还有一些额外的步骤要做,因为IBM改变了一些事情,你可以在这里查找信息包http://www-01.ibm.com/support/docview.wss?uid=nas8N1015556
或者告诉您的ODBC / JDBC / .Net数据适配器/提供程序不使用包。这可能不太理想,因为包有性能优势。