.net DB2查询偶尔会得到SQL0925N:由于中断错误,处理被取消

.net DB2查询偶尔会得到SQL0925N:由于中断错误,处理被取消,.net,sql,entity-framework,db2,.net,Sql,Entity Framework,Db2,我有一个与DB2数据库交互的.Net应用程序(实体框架,不确定这个细节是否重要)。有时,我会在查询时遇到以下错误: ERROR [57014] [IBM][DB2] SQL0952N Processing was cancelled due to an interrupt. 这是整个错误文本(内部异常)。它没有SQLSTATE 同样,这种情况并非每次都会发生(即使对于同一个查询也是如此)。例如,我可以一次又一次地运行同一个查询,只看到错误发生了5次中的1次。查询的持续时间始终相当一致 我搜索

我有一个与DB2数据库交互的.Net应用程序(实体框架,不确定这个细节是否重要)。有时,我会在查询时遇到以下错误:

ERROR [57014] [IBM][DB2] SQL0952N  Processing was cancelled due to an interrupt.
这是整个错误文本(内部异常)。它没有SQLSTATE

同样,这种情况并非每次都会发生(即使对于同一个查询也是如此)。例如,我可以一次又一次地运行同一个查询,只看到错误发生了5次中的1次。查询的持续时间始终相当一致

我搜索了一些文档,发现了以下内容:

为了排除故障,我按照上面文档中的建议,在连接字符串中设置了
QueryTimeout=0
。这没有帮助,我仍然以大约相同的速率得到错误。我甚至试过
QueryTimeout=500
。。。同样的结果。有趣的是,在测试中,当这个错误发生时,它大约发生在30秒(文档中提到的是默认超时)。我是否仍在使用默认的超时设置

下面的连接字符串:

<add name="myConn" connectionString="(entity framework stuff);provider=IBM.Data.DB2;provider connection string=&quot;Database=myDB;User ID=myId;Server=myServer;QueryTimeout=0&quot;" providerName="System.Data.EntityClient" />

  • 是否有其他超时设置覆盖或优先于我在连接字符串中指定的设置
  • 是否可能我不是在处理超时问题,而是在处理其他问题?我已经读到,这可能是锁定的迹象。。。但作为当时唯一访问数据库的人,我可以在测试中重现这一点。可能是别的什么吗
  • 编辑


    我只是尝试设置
    QueryTimeout=1
    认为这肯定会导致每个查询超时。这似乎没有任何影响。5个查询中有4个在超过一秒钟后仍然完成。我在这里遗漏了什么?

    我可以通过在我的EF数据上下文上设置
    命令超时来解决这个问题,如下所示:

    using (dataContext = new myDB2Entities())
    {
         dataContext.CommandTimeout = 60;
         // DB CODE
    }
    
    我现在明白了,我一直尝试使用的
    QueryTimeout
    设置只是一个时间间隔,在每个时间间隔,数据库都会检查应用程序是否仍在等待响应。我没有解决应用程序在默认30秒后发出中断的问题。

    错误是SQL0952N

    为了解决这个问题,我从DB2命令行执行了这个命令

    使用QUERYTIMEOUTINTERVAL 0更新公共部分的db2 CLI CFG


    实际上,我认为57014可能是SQLSTATE。您使用的是什么平台/版本,我看到了该SQLCODE的不同文本。30秒往往是文件锁定的默认超时时间,是的,但即使只是锁定一个文件,也有许多方法(想到不同的线程)。这只是一个简单的查询吗?是否有任何触发器会意外锁定某些内容?这只是一个简单的选择。没有触发器,也没有其他任何东西出现在脑海中。。。DB2Version9.7.5修复包5Hmmm。。。看起来似乎表示系统可能认为它收到了中断消息(即-“此查询花费的时间太长,忘记它”)。您的应用程序端是否有可能导致它自己发送中断的最长时间?