2008-08-26 17 views
24

Çalıştırmak istediğim uzun süren bir SQL deyim var ve bağlantı dizgimin "timeout =" cümlesi ne olursa olsun her zaman 30 saniye sonra sona erecek gibi görünüyor.Bağlantı dizesinde onurlandırılmayan zaman aşımı

Sadece bunu yürütmek için SqlHelper.ExecuteNonQuery() kullanarak ve açılıyor bağlantıların özen icar vb

mı var benim zaman aşımı geçersiz kılma olabilir başka bir şey, ya da sql server bunu görmezden neden ediyorum? Sorgu üzerinde profiler kullanıyorum ve kodumda yönetim stüdyosunda çalıştırdığımda iz farklı görünmüyor.

Management studio, sorguyu yaklaşık bir dakika içinde tamamlar, ancak 300 veya 30000'e ayarlı bir zaman aşımı olsa bile, kodum 30 saniye sonra hala zaman aşımına uğrar.

cevap

38

Bağlantı dizinizdeki zaman aşımını ayarlamak için ne kullanıyorsunuz? Bellekten "ConnectionTimeout" olan ve sadece sunucusuna bağlanacak zamanı etkiler.

Her bireysel komut, aradığınız şey olan ayrı bir "CommandTimeout" vardır. SqlHelper'ın bunu nasıl uyguladığı konusunda emin değilim.

+1

Çok açık! Ama bu bana cevap eksik iki saat israfını durduramadı .... Teşekkürler! – Aaron

14

Bağlantı dizesinde zaman aşımına ek olarak, SQL komutunun zaman aşımı özelliğini kullanmayı deneyin. Aşağıda SqlCommand sınıfını kullanarak bir C# örneğidir. Eşdeğer kullandığınız için geçerli olmalıdır.

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