Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 повтор действия при дедлоке в try catch  [new]
Guest08082011
Guest
Доброго времени суток! Хочу при выполнении определеного действия при возникновении дедлока, попытаться запустить еще раз (может не один, а не более n-попыток). Как это правильно организовать. ПЕрвое, что приходит на ум -


begin try

    exec dbo.proc1

end try 

begin catch
    DECLARE @ErrorMessage NVARCHAR(4000), @ErrorSeverity INT, @ErrorState INT, @err_num int

    SELECT 
        @ErrorMessage = ERROR_MESSAGE(),
        @ErrorSeverity = ERROR_SEVERITY(),
        @ErrorState = ERROR_STATE(), 
        @err_num=@@error

if @err_num=1205 -- если дедлок, еще раз пробуем повторить
begin

   exec dbo.proc1

end 
else 
begin
    RAISERROR (@ErrorMessage, 
               @ErrorSeverity, 
               @ErrorState)
end

end catch
8 авг 11, 08:26    [11083674]     Ответить | Цитировать Сообщить модератору
 Re: повтор действия при дедлоке в try catch  [new]
Guest08082011
Guest
но это одна попытка, а хотелось н-ное кол-во. Чтото не могу сходу сообразить, как организовать.
8 авг 11, 08:54    [11083740]     Ответить | Цитировать Сообщить модератору
 Re: повтор действия при дедлоке в try catch  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Guest08082011
но это одна попытка, а хотелось н-ное кол-во. Чтото не могу сходу сообразить, как организовать.
Через цикл, конечно.
8 авг 11, 09:00    [11083756]     Ответить | Цитировать Сообщить модератору
 Re: повтор действия при дедлоке в try catch  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
до победного
 
while 0 = 0
begin
	begin try
		exec ...
		break;
	end try
	begin catch
		print error_message();
	end catch
end
8 авг 11, 13:34    [11085450]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить