1

在将我们的 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(s) 并关闭。

如果在任何迭代中游标未检索到任何行,则在接下来的迭代中,当您尝试打开游标时(使用不同的 SQL 查询)声明游标后会发生错误。

首先,我们将 ODBC 驱动程序更新为可用的最新版本,但问题仍然存在。

因为我们需要一个紧急的解决方案,所以我通过预先选择来确定游标是否会返回行来解决问题,否则跳过该迭代,这暂时解决了问题,但似乎不是一个非常优雅的解决方案。

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

非常感谢您提前。

4

4 回答 4

4

一般来说,如果服务器端代码出现错误,您应该致电 IBM 支持并报告。他们会询问您是否使用最新的 cume,并且可能是最新的数据库组 PTF。

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

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

自 V5R4 以来,IBM 一直在记录一些 SQL 内部错误。 select * from qrecovery.qsq901s;查看任何 SQLCODE -901 错误。

于 2013-02-20T14:53:25.580 回答
0

确保您已安装最新版本的 System I Access 的最新修订包

于 2013-03-02T16:23:46.030 回答
0

我之前遇到过这个错误,它是由连接字符串中的语法错误引起的。这是一个在旧版本的操作系统中微不足道的设置,在新版本中更重要,但不会导致连接本身失败,因此很难追踪。

例如:Port Number:8471 有拼写错误,Porte Number:8471 很难发现,但一旦找到,它就为我解决了问题。基本上,通过这部分连接的所有内容都被忽略了。

于 2014-01-02T20:10:05.853 回答
0

想为这个问题添加另一个解决方案。系统上存在的 SQL 包在升级之后/和升级期间会损坏。您必须在升级后删除这些包。这将摆脱旧的包,并允许系统在新的操作系统版本级别重新创建包。删除 SQL 包时,某些连接/作业可能会锁定这些包,因此您可能必须关闭主机服务。使用 DLTSQLPKG 命令执行删除。在 v7r2 及更高版本中,由于 IBM 在软件包方面进行了一些更改,因此需要执行一些额外的步骤,您可以在此处找到信息http://www-01.ibm.com/support/docview.wss?uid=nas8N1015556

或者告诉您的 ODBC/JDBC/.Net 数据适配器/提供者不要使用包。这可能不太理想,因为包有性能优势。

于 2017-07-11T13:57:42.190 回答