2014-06-17 47 views
0

我正在做的是使用SQL 2008,asp.net c#进行40k +记录检查。asp.net中的连接超时

现在我正面临以下错误。

enter image description here

这里是我的配置。

<add name="Test" connectionString="Data Source=MyComputer;Initial Catalog=MYDatabase;Trusted_Connection=true; Timeout=1200; pooling='true'; Max Pool Size=300; Integrated Security=SSPI;" providerName="System.Data.SqlClient" /> 

<httpRuntime maxRequestLength="1348576" executionTimeout="4322000"/> 

在此先感谢。

+0

这是页面请求超时还是SQL超时?你可以使用SSMS连接吗?查询需要多长时间才能运行? – Liath

+0

@Lath数据库中有4k条记录。 1.从数据库中选择这些4k +记录并添加到dataTable中。 2.循环数据表并将每条记录更新到数据库。 我的逻辑错了吗?这需要大约2个小时。 – Lamin

+1

单词“循环”和“数据库”总是让我紧张。 4000行不是很多,我会检查你的逻辑并确保你没有N + 1问题或类似的问题 – Liath

回答

1

逐行处理4000行听起来像个不好主意。如果更新需要两个小时,则应重新考虑解决方案。

选项:

  • 创建一个SQL语句的前期,在一次执行它们;
  • 在为你做这个工作的数据库中创建和调用一个过程;
  • 在后台进程中运行此操作,可能使用异步方法,并将进程报告回客户端。

以前的解决方案,只是为了完成:

您必须设置超时时间是你的数据库连接的连接超时的时间越长,默认的超时时间。

这对你的web.config添加system.web下:

<httpRuntime executionTimeout="1200" /> 

这将超时时间设置为1200秒。我会首先确定你优化你的SQL语句不需要这个,并将它设置为你真正需要的最低值。

+1

我们今天在办公室讨论同一个话题..有点巧合:) – Neel