ASP.NET執行SQL逾時的解決方案

來源:互聯網
上載者:User

在我們編寫程式的時候,有時候要進行複雜的查詢時,就會出現執行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、引入後台線程,由線程操作靜態對象,可以很好的解決逾時的問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.