无论配置设置如何,SQL查询都会在30秒后超时

时间:2019-07-30 04:42:07

标签: c# sql-server dapper

问题是我在 for循环中查询数据库以获取分页记录集时遇到超时错误。每个循环并不昂贵,但是使用相同的连接对象查询30秒以上会导致事务/超时错误:

我尝试为Dapper查询添加commandTimeout属性,并在app.config中添加Connection Timeout(两者都超过30秒),但是它没有任何影响。

int pages = totalCount / pageSize;
for(int pageNumber = 1; pageNumber <= pages; pageNumber++){
  string sql = @"select * from MyTable order by 1 desc offset @pageSize * (@pageNumber-1) rows fetch next @pageSize rows only;";
 _connection.Query<MyEntity>(sql, param: new {pageSize, pageNumber}).ToList();
}

  

与当前连接关联的事务已完成,但尚未处理。必须先处理事务,然后才能使用该连接执行SQL语句

1 个答案:

答案 0 :(得分:0)

事实证明,导致此问题的数据库层顶部有一个外部库的包装dll:

public static readonly TimeSpan DefaultTransactionTimeout = TimeSpan.FromSeconds(30);

覆盖此行为可解决此问题。