是什么导致无法在.NET中从DB2设置QRYTIMLMT?

时间:2015-03-26 13:43:49

标签: ado.net timeout db2 .net-4.5

我们正在使用来自C#.NET 4.5的IBM数据提供程序来查询i Series DB2数据库。通常这很好用,但对于某些查询,DB2报告错误“SQL0666 - SQL查询超出指定的时间限制或存储限制”。

我尝试了setting the command timeout to 0,但没有效果。我还尝试以解释here的方式执行CHGQRYA命令,将QRYTIMLMT值设置为* NOMAX(或其他一些大值),但似乎没有效果。但是,如果我使用相同的命令来设置QRYSTGLMT(存储限制),它将生效。因此,我知道我正在使用该命令,并且它被数据库解释和执行。

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

此外,我们的“DBA”已将限制设置为* NOMAX,对于未通过.NET提供程序运行的查询,一切正常。

我们正在使用IBM的客户端工具版本6r1和服务包SI42423。

1 个答案:

答案 0 :(得分:0)

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

我们正在使用DeriveParameters()方法正确设置参数类型,如果在设置CommandTimeout之前调用此方法,则后者不起作用(!)。解决方案是扭转这些陈述的顺序。