關於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:獲取在嘗試建立連接時終止嘗試並生成錯誤之前所等待的時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM