Udostępnij za pośrednictwem


Handling Deadlocks

When an instance of the Microsoft SQL Server Database Engine chooses a transaction as a deadlock victim, it terminates the current batch, rolls back the transaction, and returns error message 1205 to the application.

Your transaction (process ID #52) was deadlocked on {lock | communication buffer | thread} resources with another process and has been chosen as the deadlock victim. Rerun your transaction.

Ponieważ przesyłanie aplikacji Transact-SQL kwerendy można wybrać jako ofiara zakleszczenie, aplikacje powinny mieć programu obsługi błędów, które może nadlewki i podlewki 1205 komunikat o błędzie. Jeśli aplikacja nie są stosowane nadlewki ani podlewki błędu, aplikacja może być kontynuowana unaware czy jego transakcja została wycofana i mogą wystąpić błędy.

Wykonania programu obsługi błędów, które pułapki komunikat o błędzie 1205 umożliwia aplikacji do obsługi sytuacji zakleszczenie, a następnie wykonaj czynności naprawcze (na przykład automatycznie resubmitting kwerendy, na który wykonywano zakleszczenie).Dzięki automatycznie resubmitting kwerendy, użytkownik nie musi wiedzieć, że wystąpiło zakleszczenie.

Aplikacja powinno wstrzymać działanie krótko przed resubmitting swojej kwerendy.Dzięki temu inne transakcji związanych z zakleszczenie szansę, aby zakończyć i zwolnić jego blokady, które stanowiły część cyklu zakleszczenie.Zmniejsza to prawdopodobieństwo zakleszczenie, reoccurring resubmitted kwerendy żądania jego blokad.