zoukankan      html  css  js  c++  java
  • ASP.NET执行SQL超时的解决方案

    在我们编写程序的时候,有时候要进行复杂的查询时,就会出现执行sql时间过长,引起页面执行不了并提示执行脚本超时,这就是我们遇到超时异常。

    超时异常分两种情况:一种,是连接超时;一种,是执行超时。
    前者,通过SqlConnection.ConnectionTimeOut进行设置。
    后者,通过SqlCommand.CommandTimeOut进行设置。

    SqlConnection.ConnectionTimeout
    获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。
    等待连接打开的时间(以秒为单位)。默认值为 15 秒。

    SqlCommand.CommandTimeout
    获取或设置在终止执行命令的尝试并生成错误之前的等待时间。
    等待命令执行的时间(以秒为单位)。默认为 30 秒。

     

     

    这个是网上找到的方法:
    conn.open();
    SqlCommand sqlcmd=new SqlCommand();
    sqlcmd.CommandTimeout=180; //sqlcmd的超时为3分钟
    可根据需要设置,如果过长,也可以设置为0,当此属性设置为0时表示不限制时间。此属性值应该慎用。还需要在Web.config配置文件中设置http请求运行时限间 
    <system.web> 
    <httpRuntime maxRequestLength="102400" executionTimeout="720" />
    </system.web>
    这里设置的为720秒,前面的属性maxRequestLength一般用于用户上传文件限制大小!默认一般为4096KB(4 MB)。

    我在项目中用到的另一种方法:
    由于项目需要一次导入至少20万条记录并进行分类筛选、计算、入库操作。
    服务器环境不是很好,挂载了太多的网站,所以整个转换过程可能会超过半个小时,此时除服务器可能超时外,浏览器和服务器端的Session都有可能超时,另外用户并不一定需要等待任务完成。当然如果能查看任务进度更好。

    解决办法:

    1、引入静态对象记录当前的操作状态,使用Ajax实时显示任务完成进度,由于使用了静态对象,即使使用者暂时离开页面再次进入时进度还是在;

    2、引入后台线程,由线程操作静态对象,可以很好的解决超时的问题。

  • 相关阅读:
    Maximum Flow Exhaustion of Paths Algorithm
    ubuntu下安装java环境
    visualbox使用(二)
    vxworks一个超级奇怪的错误(parse error before `char')
    February 4th, 2018 Week 6th Sunday
    February 3rd, 2018 Week 5th Saturday
    February 2nd, 2018 Week 5th Friday
    February 1st, 2018 Week 5th Thursday
    January 31st, 2018 Week 05th Wednesday
    January 30th, 2018 Week 05th Tuesday
  • 原文地址:https://www.cnblogs.com/qanholas/p/2933625.html
Copyright © 2011-2022 走看看