2010-04-04 3 views
0

У меня проблема с таймаутом, когда я запускаю команду через приложение, генерируется исключение таймаута, но когда я запускаю его непосредственно в sql, исключение исключения тайм-аута!проблема сAsync SqlComman

мой SP занимает около 11 минут, когда я запускаю его напрямую. для решения этой проблемы, здесь я нашел код ниже, но он работает неправильно! Сразу после beginExecute, IAsyncResult.iscomplete становятся истинными !!!!

В чем проблема?

IAsyncResult result = command.BeginExecuteNonQuery(); 

    int count = 0; 
    while (!result.IsCompleted) 
    { 
     Console.WriteLine("Waiting ({0})", count++); 
     System.Threading.Thread.Sleep(1000); 
    } 
    Console.WriteLine("Command complete. Affected {0} rows.", 
    command.EndExecuteNonQuery(result)); 

рассматривает

ответ

0

Увеличьте время ожидания команды (SqlCommand.CommandTimeout), которое по умолчанию составляет 30 секунд.

+0

Я не знал, что в Command еще один тайм-аут! Спасибо, Моя основная проблема решена! Но что случилось с IAsync? – Alibm

+0

Вышлите результаты? Что вы указываете как текст команды? –

0

Строка соединения по умолчанию будет 15 секунд ожидания. См. На странице MSDN.

Вы можете изменить таймаут в строке соединения дольше (connection timeout=600, для 10-минутного таймаута).

См. this сайт для получения дополнительной информации о строках подключения.

Сказав это, вы должны изучить оптимизацию своей базы данных и/или хранимой процедуры. 11 минут для хранимой процедуры очень длинный. У вас есть правильные индексы на ваших таблицах? Вы храните процедуру, написанную наиболее оптимальным образом?

Update:

Вы сделали, что вы используете правильную команду, и что результаты являются правильными? IsComplete, правда, почти сразу предполагает, что команда действительно закончилась.

+0

Спасибо за ответ, Я увеличил таймаут в строке подключения, но это не сработало. в этом sp Мне нужно работать на 3 таблицы иерархически, У меня есть 3 курсора и используется их иерархически для этой 3 таблицы! – Alibm

+0

@Alibm - Что не так с 3 соединениями вместо курсоров? – Oded

+0

Мне нужно прочитать все эти записи и вставить их для newyaer, поэтому мне нужны новые идентификаторы для дочерних таблиц – Alibm