C#百萬(wàn)數(shù)據(jù)查詢出現(xiàn)超時(shí)問(wèn)題的解決方法
本文較為詳細(xì)的講解了C#百萬(wàn)數(shù)據(jù)查詢出現(xiàn)超時(shí)問(wèn)題的解決方法,分享給大家供大家參考之用。具體方法如下:
很多時(shí)候我們用C#從百萬(wàn)數(shù)據(jù)中篩選一些信息時(shí),經(jīng)常會(huì)出現(xiàn)程序連接超時(shí)的錯(cuò)誤,常見(jiàn)的錯(cuò)誤有很多,例如:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server等等
本文就常見(jiàn)的幾種解決方案進(jìn)行說(shuō)明,感興趣的可以對(duì)此加以改進(jìn)與完善。
①.當(dāng)然第一步要查看是否Connection沒(méi)關(guān)閉問(wèn)題,一般新手都會(huì)犯這個(gè)錯(cuò)誤,需要認(rèn)真查看一下哦,這個(gè)就不詳細(xì)說(shuō)了。
②.如果將sql語(yǔ)句復(fù)制到查詢分析器中執(zhí)行,如果執(zhí)行時(shí)間本來(lái)就超過(guò)30秒,那么一般采用如下的解決方案:
首先分析引起Timeout的原因,一般是Connection沒(méi)關(guān)閉或者SqlConnection.ConnectionTimeout超時(shí),另外一種就是SqlCommand.CommandTimeout引起的, SqlCommand的此方法為獲取或設(shè)置在終止執(zhí)行命令的嘗試并生成錯(cuò)誤之前的等待時(shí)間,
他的默認(rèn)為 30 秒,你可以設(shè)置為0 ,它表示無(wú)限制,但是最好不要去設(shè)置0 ,否則會(huì)無(wú)限的等待下去的,只需要針對(duì)查詢分析器的時(shí)間,去設(shè)置這個(gè)時(shí)間就可以了
③.執(zhí)行時(shí)間不是很長(zhǎng),但是還是操作超時(shí),那么 也有很多原因,一般經(jīng)常出現(xiàn)的有兩種,asp.Net應(yīng)用程序的請(qǐng)求超時(shí),或者是連接池的連接生存期過(guò)去,,因?yàn)檫B接池默認(rèn)值是60秒,那么針對(duì)這兩種解決方案為:
解決應(yīng)用程序請(qǐng)求超時(shí):
在web.config中加上以下語(yǔ)句:
<system.web> <httpRuntime maxRequestLength="102400" executionTimeout="720" /> </system.web>
executionTimeout:是允許執(zhí)行請(qǐng)求的最大時(shí)間限制,單位為秒
maxRequestLength:指示 ASP.Net 支持的最大文件上載大小。該限制可以防止。大家都懂的。
解決程序池生存周期問(wèn)題:
在數(shù)據(jù)庫(kù)連接字符串中修改:
database=AA; uid=sa; pwd=sa; Pooling=true; MAX Pool Size=1024; Min Pool Size=1; Connection Lifetime=60
至于含義基本上從英文的意思上大家就明白了,呵呵。當(dāng)然Min Pool Size=1這個(gè)設(shè)置還有很多講究。
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#實(shí)現(xiàn)的sqlserver操作類實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)的sqlserver操作類,結(jié)合具體實(shí)例形式分析了C#針對(duì)sqlserver數(shù)據(jù)庫(kù)進(jìn)行連接、查詢、更新、關(guān)閉等相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
C#通過(guò)實(shí)現(xiàn)winmm枚舉音頻設(shè)備
使用C#做音頻錄制時(shí)需要獲取音頻設(shè)備信息,其中比較簡(jiǎn)單的就是使用winmm,所以本文就為大家介紹一下C#如何通過(guò)實(shí)現(xiàn)winmm枚舉音頻設(shè)備,需要的可以參考下2023-10-10

