IBM DB2 ODBC驱动程序问题[错误69899]数据库主机服务器代码中发生错误。 SQLSTATE = S1000

时间:2013-02-20 09:41:23

标签: db2 ibm-midrange db2-400

将我们的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>

知道如何获取有关主机上发生的错误的更多信息吗?

非常感谢你。

4 个答案:

答案 0 :(得分:4)

一般来说,如果服务器端代码中发生错误,您应该致电IBM支持并报告。他们会询问您是否处于最新状态,可能是最新的数据库组PTF。

服务器在名为QZDASOINIT的作业中运行ODBC连接。由于系统可能存在许多联系,因此可能存在许多QZDASOINIT作业。要查找您的,请转到终端会话并WRKOBJLCK MYPROFILE *USRPRF。您将看到一个与您的用户个人资料一起运行的作业列表。其中至少有一个是您正在寻找的QZDASOINIT工作。使用选项5查看作业,然后使用选项10查看作业日志。按F10查看详细消息,按F18转到底部(最近)条目。

如果错误严重到服务器作业异常终止,则不会锁定您的用户配置文件。而是使用WRKSPLF转到假脱机的作业日志。

自从V5R4以来,IBM一直在记录一些SQL内部错误。 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数据适配器/提供程序不使用包。这可能不太理想,因为包有性能优势。