我们正在使用来自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。
答案 0 :(得分:0)
好的,经过大量测试后,我发现了问题。
我们正在使用DeriveParameters()方法正确设置参数类型,如果在设置CommandTimeout之前调用此方法,则后者不起作用(!)。解决方案是扭转这些陈述的顺序。