2017-05-22 56 views

回答

0

您需要更改連接字符串超時而不是表適配器:

Connection timeout for SQL server

好運。

+0

謝謝。它完成了這項工作。 –

+0

昨天有效。今天我像以前一樣超時 - 在30秒後。 –

+0

如果數據需要這麼長時間,可以將其從30秒向上增加,但可能是底層數據中的關係問題,或者在調試問題時發現奇怪的行爲IIS Express在3GB RAM內存使用情況下封頂:嘗試更改它起來,看看你的表索引 –

1

有兩個地方可以設置超時。

  1. SqlConnection
  2. SqlCommand

SqlConnectionConnectionTimeout財產。它指定ADO.Net在嘗試連接到服務器時等待的時間。如果沒有連接到服務器(網絡關閉/服務器沒有運行等),則拋出異常。

SqlCommand has CommandTimeout property。它指定執行命令後返回結果的等待時間(您可以撥打Execute/ExecuteNoQuery等)。如果在指定的時間內沒有返回結果,則會引發異常。默認情況下,命令超時時間爲30秒。所以,如果這個命令需要50秒,你將會得到一個異常。

SqlConnection對於和SqlCommand它很簡單,只需設置上的對象的屬性的值。

對於TableAdapter,您有兩種方法設置ConnectionTimeout(兩者都導致相同的輸出)。首先是在連接字符串中設置。其次是在爲適配器設置連接時將其設置在Advanced屬性對話框中。

對於CommandTimeout,您需要從正在超時的適配器訪問特定命令。如果選擇命令是吹起來的,你可以使用這個:

var ta = new YouTableAdapter(); 
ta.Adapter.SelectCommand.CommandTimeout = 100; 
+0

我在連接字符串中設置連接超時,它的工作,但今天我得到了「超時連接」30秒後像以前一樣,我不知道如何解決這個問題.. –

+0

有你試過設置'Adapter.SelectCommand.CommandTimeout'嗎?你可以檢查'SelectCommand'的'Connection'是否超時? 它可能是任何原因,但你有沒有想過分頁數據來加載它?或者設置在服務器上的一些指數? – TheVillageIdiot

+0

據我所知你不能設置CommandTimeout的類型TableAdapter因爲沒有公開的屬性暴露。傾向於部分TableAdapter類並設置CommandTimeout值。然後我使用這個TableAdapter從窗體類中調用這個屬性。 –