2014-06-17 46 views
0

我正在做的是使用SQL 2008,asp.net c#進行40k +記錄檢查。asp.net中的連接超時

現在我正面臨以下錯誤。

enter image description here

這裏是我的配置。

<add name="Test" connectionString="Data Source=MyComputer;Initial Catalog=MYDatabase;Trusted_Connection=true; Timeout=1200; pooling='true'; Max Pool Size=300; Integrated Security=SSPI;" providerName="System.Data.SqlClient" /> 

<httpRuntime maxRequestLength="1348576" executionTimeout="4322000"/> 

在此先感謝。

+0

這是頁面請求超時還是SQL超時?你可以使用SSMS連接嗎?查詢需要多長時間才能運行? – Liath

+0

@Lath數據庫中有4k條記錄。 1.從數據庫中選擇這些4k +記錄並添加到dataTable中。 2.循環數據表並將每條記錄更新到數據庫。 我的邏輯錯了嗎?這需要大約2個小時。 – Lamin

+1

單詞「循環」和「數據庫」總是讓我緊張。 4000行不是很多,我會檢查你的邏輯並確保你沒有N + 1問題或類似的問題 – Liath

回答

1

逐行處理4000行聽起來像個不好主意。如果更新需要兩個小時,則應重新考慮解決方案。

選項:

  • 創建一個SQL語句的前期,在一次執行它們;
  • 在爲你做這個工作的數據庫中創建和調用一個過程;
  • 在後臺進程中運行此操作,可能使用異步方法,並將進程報告回客戶端。

以前的解決方案,只是爲了完成:

您必須設置超時時間是你的數據庫連接的連接超時的時間越長,默認的超時時間。

這對你的web.config添加system.web下:

<httpRuntime executionTimeout="1200" /> 

這將超時時間設置爲1200秒。我會首先確定你優化你的SQL語句不需要這個,並將它設置爲你真正需要的最低值。

+1

我們今天在辦公室討論同一個話題..有點巧合:) – Neel