В одной части нашего приложения мы должны сохранить некоторые данные. Сохранение данных занимает некоторое время, которое может варьироваться от нескольких секунд до нескольких минут. Чтобы справиться с этим, чтобы не было тайм-аута sql, у нас есть следующий процесс.
Примечание. Все это настраивается нашим администратором баз данных, и этот процесс используется в течение нескольких лет без каких-либо проблем.
1: вызовите хранимую процедуру, которая помещает задание в таблицу. Эта хранимая процедура возвращает мне jobid. Входными параметрами для этого sp является оператор exec для выполнения другой хранимой процедуры с параметрами.
2: Затем я вызываю другую хранимую процедуру, передающую jobid, которая возвращает статус задания, например. завершено (истина), иначе ложь + сообщение об ошибке.
3: я выполняю шаг 2 не более 5 раз с перерывом в 2 секунды. Если возвращенный статус завершен или есть какая-то ошибка, я выхожу из цикла. И после того, как 5 раз все еще статус не завершен, я просто отображаю сообщение о том, что это занимает слишком много времени, и, пожалуйста, посетите страницу позже (это не очень хорошая идея, но пока процесс завершился примерно 2-3 раза за цикл и не достиг 5 раз максимум но шансы есть).
Теперь мне интересно, есть ли лучший способ выполнить вышеуказанную работу или даже сегодня, спустя несколько лет, это лучший вариант, который у меня есть?
Примечание. Использование веб-форм ASP.NET 2.0/ADO.NET