我有一个与 DB2 数据库交互的 .Net 应用程序(实体框架,不确定该细节是否重要)。 有时我会在查询中收到以下错误:
ERROR [57014] [IBM][DB2] SQL0952N Processing was cancelled due to an interrupt.
这是整个错误文本(内部异常)。它没有 SQLSTATE。
同样,这不会每次都发生(即使对于相同的查询)。例如,我可以一遍又一遍地运行相同的查询,并且只看到错误发生 5 次中的 1 次。查询的持续时间总是相当一致的。
我搜索了一些文档,发现以下内容: http ://www-01.ibm.com/support/docview.wss?uid=swg21450816
只是为了排除故障,我遵循了上述文档中的建议并QueryTimeout=0
在我的连接字符串中进行了设置。这没有帮助,我仍然以大致相同的速度得到错误。我什至试过QueryTimeout=500
......同样的结果。有趣的是,在测试中,当这个错误发生时,它大约发生在 30 秒标记处(文档提到的是默认超时)。我还在以某种方式使用默认超时设置吗?
下面的连接字符串:
<add name="myConn" connectionString="(entity framework stuff);provider=IBM.Data.DB2;provider connection string="Database=myDB;User ID=myId;Server=myServer;QueryTimeout=0"" providerName="System.Data.EntityClient" />
- 是否有其他超时设置覆盖或优先于我在连接字符串中指定的设置?
- 是否有可能我不是在处理超时问题,而是在处理其他一些问题?我已经读过这可能是锁定的迹象......但我可以在测试中重现这一点,这是当时唯一访问数据库的人。会不会是别的东西?
编辑
我只是尝试设置QueryTimeout=1
认为这肯定会导致每个查询超时。这似乎没有任何影响。使用 WELL 超过一秒后,仍有 5 个查询中的 4 个完成。我在这里想念什么?