2008-08-26 63 views
24

我有一個長時間運行的SQL語句,我想要運行,無論我放在連接字符串的「timeout =」子句中,它總是在30秒後結束。連接字符串中的超時不被遵守

我只是用SqlHelper.ExecuteNonQuery()執行它,並讓它照顧打開連接的,等

有別的可能被重寫我的超時,或導致SQL服務器忽略它?我在查詢上運行了分析器,當我在管理工作室中運行它時,跟蹤與我的代碼相比沒有任何區別。

Management Studio在大約一分鐘內完成查詢,但即使超時設置爲300或30000,我的代碼在30秒後仍然超時。

回答

38

你用什麼來設置連接字符串的超時時間?從「ConnectionTimeout」的內存中,僅影響實際需要的時間連接到服務器。

每個單獨的命令有一個單獨的「CommandTimeout」,這將是你在找什麼。不知道SqlHelper如何實現。

+1

很明顯!但是,這並沒有阻止我浪費兩個小時錯過了答案......謝謝! – Aaron 2009-04-16 19:44:59

14

除連接字符串超時之外,嘗試使用SQL命令的timeout屬性。下面是一個C#示例,使用SqlCommand類。它的等價物應該適用於你正在使用的東西。

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection); 
command.CommandTimeout = 0; 
int rows = command.ExecuteNonQuery();