【发布时间】:2018-03-20 15:13:16
【问题描述】:
我在 IBM AS400 DB2 SQL v6r1 服务器上使用 Microsoft Access 2007。最近,我开始通过将一些更复杂的 Access 查询转换为 Pass-Through 类型来扩展我的 DB2 体验。查询速度的提高是惊人的,但也是意料之中的,尤其是在我们较大的表中,有些表有 20,000,000 多行。
正如人们对 Access + DB2 所期望的那样,我遇到了 SQL0666 错误。或者至少......我现在期待它,因为我遇到了很多。我通过增加传递查询的“ODBC 超时”属性应用了自助并解决了这个问题。通过增加它直到查询有效,然后将它加倍,我找到了一个逻辑上安全的值。
无论 Access 以何种方式计算其对查询持续时间的估计,它似乎都与现实严重不成比例。如果我将这样的查询复制/粘贴到 IBM iNavigator SQL 窗口中并在那里运行它,它只需要一小部分时间,有时是 Access 认为它应该花费的时间的 1/10。
昨天我偶然发现了以下网页,其中描述了完全消除查询超时问题的步骤。我发现它在 DSN 中添加了“QUERYTIMEOUT=0”,这似乎是 SQL0666 错误的永久解决方案。
https://kb.rfgen.com/kb/index.php?View=entry&EntryID=107
但是……
这不是很危险吗..?
一个失控的查询是否会浸没服务器,直到每个人都尖叫或崩溃..?
是否有另一个更深的超时限制来防止进程失控......?
我很想将它添加到我的所有查询中,但作为一个关心的书呆子,我对此犹豫不决。
【问题讨论】:
-
在 i-server 端,有一个单独的系统范围的查询时间限制。见ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzakz/…。也许您应该投资于优化查询...?
-
而且...我很高兴我问了。值“数据库查询时间限制”设置为“无最大值”。谢谢你指出。至于优化查询,我会尽我所知。我确实了解优化的某些方面是由服务器自动处理的,例如将子查询作为连接处理(但我还是尝试这样做),但除此之外我不知道。
标签: ms-access db2 odbc ms-access-2007 db2-400