zoukankan      html  css  js  c++  java
  • 关于sql链接超时的问题

       也许你会说,我在连接字符串中已经 设置了 Connect Timeout=80000 ,并且数据库中超时连接也是设置的值是一个很大的值。为啥到了30秒,仍然超时了呢??
             这是因为:
             你的设置并没有问题,是你混淆了  SqlCommand.CommandTimeout  和 SqlConnection.ConnectionTimeout 这两个的区别了。
             你的连接字符串中的超时只是设置的 SqlConnection.ConnectionTimeout 的值,而不是设置的 SqlCommand.CommandTimeout 的值。
             SqlHelper 中并没有 SqlCommand.CommandTimeout 的相关设置。需要你自己设置。
             下面是两个的比较:
             SqlCommand.CommandTimeout
             获取或设置在终止执行命令的尝试并生成错误之前的等待时间。
             等待命令执行的时间(以秒为单位)。默认为 30 秒。
             SqlConnection.ConnectionTimeout
             获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。
             等待连接打开的时间(以秒为单位)。默认值为 15 秒。
    ---------------------
    作者:衣舞晨风
    来源:CSDN
    原文:https://blog.csdn.net/jiankunking/article/details/45221365
    版权声明:本文为博主原创文章,转载请附上博文链接!

    解决方法:
    第一步:修改Web.config配置文件。在数据库连接字符串中加上连接时间Connect Timeout,根据实际情况定时间。

    1. <!--连接数据库-->  
    2. <connectionStrings>  
    3.      <add name="strConnDB" connectionString=" Data Source=192.168.*.*;Initial Catalog=DatabaseName;Persist Security Info=True;User id=sa;Password=password;pooling=true;max pool size=800;min pool size=300;Connect Timeout=500"/>  
    4. </connectionStrings>  


    第二步:修改command对象的CommandTimeout属性。 

    1. SqlCommand cmd = new SqlCommand();  
    2. cmd.CommandTimeout = 180;  

    这里设置的时间是180秒,即三分钟!可根据需要设置,如果过长,也可以设置为0,当此属性设置为0时表示不限制时间。此属性值应该慎用。

    到此为止,问题完美解决。

    补充:
    SqlCommand.CommandTimeOut:获取或设置在终止执行命令的尝试并生成错误之前的等待时间。
    SqlConnection.ConnectionTimeout:获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。

  • 相关阅读:
    关于hibernate的缓存使用(转)
    Webservice 实践
    三大电商注册登录表单分析
    网上好文搜集
    git简介
    Python程序中的进程操作--—--开启多进程
    进程的创建和结束
    同步异步阻塞和非阻塞
    进程的并行和并发
    进程调度
  • 原文地址:https://www.cnblogs.com/qqhfeng/p/10260240.html
Copyright © 2011-2022 走看看