2013-02-26 93 views
1

我有一個運行存儲函數並填充數據集的vb.net程序。但是,由於信息量太大,有時會在某些數據庫上超時。SQL Query TimeOut

如何增加查詢的超時時間以避免超時?

在我的表單按鈕,我有以下的代碼不工作(它仍然超時,程序錯誤)

Me.1TableAdapter.Connection.ConnectionString = "Data Source=10.0.1.1;Initial Catalog=Database;Persist Security Info=True;User ID=USER;Password=PASSWORD; Connection Timeout = 120" 

Me.1TableAdapter.Fill(Me.Dataset.1, TodayDt, TodayEnd) 

Me.2TableAdapter.Fill(Me.Dataset.1, TodayDt, TodayEnd) 

我得到的錯誤信息:

System.Data .SQLClient.SQLException:超時過期。操作完成或服務器沒有響應的超時時間已過去。

+0

檢查這個 [此處輸入鏈接的描述] [1] [1]:http://stackoverflow.com/questions/2748706/connection-timeout-and連接壽命 – SP007 2013-02-26 19:53:49

回答

11

的連接有超時,但這樣做對連接運行命令。該超時是等待嘗試建立連接需要等待多長時間。請參閱http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx

因此,假定您正在使用SqlCommand,然後設置該命令的CommandTimeout屬性。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx

+3

沒錯。默認的查詢超時是30秒IIRC。我發現很煩人的是,沒有辦法在連接字符串本身中指定默認查詢超時:您需要在配置文件中爲其添加一個鍵,以不需要新構建的方式覆蓋它。還要注意:**該屬性是在執行命令或處理結果期間對所有網絡讀取的累計超時(對於在調用方法期間讀取的所有網絡數據包)。在返回第一行後,超時仍然可能發生,並且不包括用戶處理時間,僅包括網絡讀取時間。** – 2013-02-26 19:54:23

+0

我對此有點困惑。我真的不知道從哪裏開始......我假設我需要增加tableadapter填充的超時時間......但上面的鏈接混淆了我。 – Shmewnix 2013-02-27 12:41:55

+1

請參閱http://stackoverflow.com/questions/1192171/how-can-i-change-table-adapters-command-time-out和http://stackoverflow.com/questions/975898/control-tableadapter-command-超時全球 – 2013-02-27 12:52:38