我的TableAdapter
是在ADO.NET數據集中定義的。我的存儲過程在SSMS中執行50秒。當我試圖在應用程序中執行它時,我得到超時。c# - Tableadapter由於超時而不工作
如何設置TableAdapter
的超時連接值?
我的TableAdapter
是在ADO.NET數據集中定義的。我的存儲過程在SSMS中執行50秒。當我試圖在應用程序中執行它時,我得到超時。c# - Tableadapter由於超時而不工作
如何設置TableAdapter
的超時連接值?
有兩個地方可以設置超時。
SqlConnection
SqlCommand
SqlConnection
有ConnectionTimeout
財產。它指定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;
我在連接字符串中設置連接超時,它的工作,但今天我得到了「超時連接」30秒後像以前一樣,我不知道如何解決這個問題.. –
有你試過設置'Adapter.SelectCommand.CommandTimeout'嗎?你可以檢查'SelectCommand'的'Connection'是否超時? 它可能是任何原因,但你有沒有想過分頁數據來加載它?或者設置在服務器上的一些指數? – TheVillageIdiot
據我所知你不能設置CommandTimeout的類型TableAdapter因爲沒有公開的屬性暴露。傾向於部分TableAdapter類並設置CommandTimeout值。然後我使用這個TableAdapter從窗體類中調用這個屬性。 –
謝謝。它完成了這項工作。 –
昨天有效。今天我像以前一樣超時 - 在30秒後。 –
如果數據需要這麼長時間,可以將其從30秒向上增加,但可能是底層數據中的關係問題,或者在調試問題時發現奇怪的行爲IIS Express在3GB RAM內存使用情況下封頂:嘗試更改它起來,看看你的表索引 –