讓ASP.net Web應用程序查詢來自SQL Server 2005數據庫的數據。有一個頁面會偶爾超時。查詢超時 - 零星
追溯代碼並找到SQL。通過查詢工具運行SQL,它總是在2秒內運行。 SQL Server的默認超時時間是10分鐘。
此問題的解決方法是將sql server超時更改爲20分鐘,然後再更改爲10分鐘。然後頁面通常需要2秒鐘來查詢和顯示。
看過可能的鎖定,但沒有顯示會導致問題。關於唯一的結論是重置超時設置正在殺死一個進程。
尋找一些可以追蹤的想法。
謝謝
讓ASP.net Web應用程序查詢來自SQL Server 2005數據庫的數據。有一個頁面會偶爾超時。查詢超時 - 零星
追溯代碼並找到SQL。通過查詢工具運行SQL,它總是在2秒內運行。 SQL Server的默認超時時間是10分鐘。
此問題的解決方法是將sql server超時更改爲20分鐘,然後再更改爲10分鐘。然後頁面通常需要2秒鐘來查詢和顯示。
看過可能的鎖定,但沒有顯示會導致問題。關於唯一的結論是重置超時設置正在殺死一個進程。
尋找一些可以追蹤的想法。
謝謝
有兩種不同的超時在這裏玩。連接超時(在連接字符串中指定,並作爲SqlConnection的屬性)和查詢超時(屬性SqlCommand.CommandTimeout)。默認值爲:
查詢超時被定義爲「所有網絡的累積超時的結果的命令執行或處理過程中進行讀取。在返回的第一行後仍可以發生超時,並且不包括用戶處理時間,只有網絡讀取時間「
網絡讀取時間消耗(包括網絡爭用)的很多原因。我會尋找的東西:
如果您通過連接字符串指定了連接超時,則不會使用現有的連接SQL Server連接:由於連接池高速緩存基於所使用的連接字符串,因此會獲得全新連接。你正確地Dispose()'你的連接/命令/等?如果你留下一個閱讀數據的開放閱讀器,你可能會留下一個鎖,導致問題。有時,SQL Server扼流器會丟棄連接並留下一個鬼spid,這也會引起類似的鎖爭用問題。