什么会导致无法在 .NET 的 DB2 中设置 QRYTIMLMT?

What can cause an inability to set QRYTIMLMT in DB2 from .NET?

我们使用来自 C# .NET 4.5 的 IBM 数据提供程序来查询 i 系列 DB2 数据库。通常这工作得很好,但对于某些查询,DB2 报告错误 "SQL0666 - SQL query exceeds specified time limit or storage limit"。

我试过 setting the command timeout to 0, but to no effect. I have also tried to execute, in the manner explained here,CHGQRYA 命令将 QRYTIMLMT 值设置为 *NOMAX(或其他一些较大的值),但似乎没有效果。但是,如果我使用相同的命令设置 QRYSTGLMT(存储限制),它就会生效。因此,我知道我正确地使用了命令,并且它被数据库解释和执行。

那么,是什么导致我无法设置 QRYTIMLMT 值?

此外,我们的 "DBA" 已将限制设置为 *NOMAX,对于不是 运行 通过 .NET 提供商的查询,一切正常。

我们使用的是带有服务包 SI42423 的 IBM 客户端工具版本 6r1。

好的,经过大量测试,我发现了问题。

我们正在使用 DeriveParameters() 方法正确设置参数类型,如果在设置 CommandTimeout 之前调用此方法,则后者无效(!)。解决方案是颠倒这些语句的顺序。