2015-10-08 61 views
0

我正在運行使用OdbcCommand的ASP.NET 4.0應用程序。默認情況下,命令超時爲30秒。當我運行我的網頁時,我的查詢錯誤與「SQL0666 - SQL查詢超出指定的時間限制或存儲限制」。錯誤。 Execute Reader行執行時間少於2秒,遠遠少於Command Timeout。我添加了一行將CommandTimeout設置爲300秒並執行代碼。 Execute Reader運行,整個頁面在15秒內加載,再次遠遠小於Command Timeout值。如果我運行更改,我添加的行將命令超時設置爲30秒,代碼錯誤在2秒以內,與上面相同的錯誤。查詢本身只有大約15行,並在幾秒鐘內在IDE中運行。使用SQL0666執行ODBC命令錯誤錯誤

原始代碼,在少於兩秒

即在15秒內運行
using (IDataReader reader = this._commandExecuter.ExecuteReader(cmdData)) 
{ 
    //do stuff 
} 

代碼錯誤:

cmdData.CommandTimeout = 300; 
using (IDataReader reader = this._commandExecuter.ExecuteReader(cmdData)) 
{ 
    //do stuff 
} 

代碼的錯誤在小於2秒:

cmdData.CommandTimeout = 30; 
using (IDataReader reader = this._commandExecuter.ExecuteReader(cmdData)) 
{ 
    //do stuff 
} 

有沒有人遇到過這個問題?除了將超時設置爲可用的值之外,您是否找到了解決方案?

+0

是什麼'_commandExecuter'嗎?只需返回'cmdData.ExecuteReader()'?爲什麼抽象? –

+0

我們使用抽象來允許針對單元測試的數據庫模擬調用。 –

回答

0

我也有類似問題的某個時候,我們將超時設置爲零,以修復:

cmdData.CommandTimeout = 0; 
+0

這是行不通的,但我想知道爲什麼當整個頁面在查詢超時下載時出現此錯誤。 –