用c#從百萬數據中篩選一些信息時,經常會出現程序連接超時的錯誤,常見的錯誤很多,例如:Timeout expired. The timeout period elapsed prior to completion of the operation or the server等等
本文就常見的幾種解決方案進行說明,純屬個人見解,歡迎拍磚
①:當然第一步要查看是否Connection沒關閉問題,一般新手都會犯這個錯誤,需要認真查看一下哦,這個就不詳細說了。
②:如果將sql語句復制到查詢分析器中執行,如果執行時間本來就超過30秒,那么一般采用如下的解決方案:
首先分析引起Timeout的原因,一般是Connection沒關閉或者SqlConnection.ConnectionTimeout超時,另外一種就是SqlCommand.CommandTimeout引起的, SqlCommand的此方法為獲取或設置在終止執行命令的嘗試並生成錯誤之前的等待時間,
他的默認為 30 秒,你可以設置為0 ,它表示無限制,但是最好不要去設置0 ,否則會無限的等待下去的,只需要針對查詢分析器的時間,去設置這個時間就可以了
③:執行時間不是很長,但是還是操作超時,那么 也有很多原因,一般經常出現的有兩種,asp.Net應用程序的請求超時,或者是連接池的連接生存期過去,,因為連接池默認值是60秒,那么針對這兩種解決方案為:
解決應用程序請求超時:
在web.config中加上以下語句:
<system.web>
<httpRuntime maxRequestLength="102400" executionTimeout="720" />
</system.web>
executionTimeout:是允許執行請求的最大時間限制,單位為秒
maxRequestLength:指示 ASP.Net 支持的最大文件上載大小。該限制可以防止。。。。大家都懂的。。呵呵
解決程序池生存周期問題:
在數據庫連接字符串中修改:database=AA;uid=sa;pwd=sa; Pooling=true; MAX Pool Size=1024;Min Pool Size=1;Connection Lifetime=60
至於含義基本上從英文的意思上大家就明白了,呵呵。。。當然Min Pool Size=1這個設置還有很多講究,如果想研究的可以看一下下面的文章,呵呵
http://www.cnblogs.com/ZHUYIN/archive/2011/11/02/2232578.html