2013-12-11 39 views
2

我在一個新的C#項目中工作,需要一些幫助。SQL超時在C#代碼中過期

該系統具有使用Quartz API和一個他們不工作了預定的一些工作。

我嘗試手動執行該方法和得到這個錯誤

「超時過期。之前的操作的完成超時時間已過或服務器未響應」。

在這條線(捕捉{}叫):

TList<TbBooking> allBooks = DataRepository.TbBookingProvider.Find(bQuery); 

變量bQuery與4200號的查詢和一些參數樣1個月的時間,標誌等

我檢查了SQL超時設置,它是10分鐘(默認),但在代碼輸入.Find()方法(少於2分鐘)後幾秒鐘內出現消息,但使用SQLMS很快執行查詢。

我正在考慮運行命令sp_updatestats但我想先看看您的建議。

p.s.該項目使用的CodeSmith,這是的funcionality工作自2010年以來

+0

缺少一個巨大的表上的索引? (隨着時間的推移,查詢是否運行速度較慢?)或者在其他地方存在一個鎖,阻止查詢執行? (對於相同數量的項目,這是一個突然的問題嗎?)另外,在SSMS中直接運行命令*時的性能如何? (這個計劃顯示了什麼) – user2864740

+0

我懷疑問題是我的應用程序中的一些設置,因爲查詢返回的結果少於10秒。我改變了defaultCommandTimeout。 –

回答

0

我用sp_updatestats並沒有奏效。我爲該列創建了一個索引,但沒有工作。所以我在名爲defaultCommandTimeout的ProviderBase類中找到了一個屬性設置爲30秒。我將其在我的app.config文件中更改爲120,查詢再次運行。