Documente Academic
Documente Profesional
Documente Cultură
Așa cum se arată în diagrama e mai sus, avem două procese (proces înseamnă tranzacții),
cum ar fi Procesul A și Procesul B. Avem în baza de date două tabele precum Tabelul A și Tabelul B.
Procesul A a început și achiziționează un blocaj pe tabela A, iar între timp Procesul B a început și a
achiziționat un blocaj pe Tabelul B. Acum pentru a finaliza execuția sa, procesul A are nevoie de
resursa Tabelului B care este deja blocată de Proces B. În același timp, Procesul B are nevoie de
resursa Tabelul A care este deja blocat de Procesul A. În astfel de cazuri niciuna dintre tranzacții
(procese) nu poate avansa, ceea ce duce la un impas.Când se produc blocaje în SQL Server, atunci
SQL Server alege unul dintre procesele (tranzacțiile) ca victimă a blocajului și apoi realizează
rollback acelui proces.
Drept urmare, alte procese pot avansa.
Procesul ales pentru victima impunerii va produce următoarea eroare.
Cod tranzacție 2:
-- Transaction 2
-- Step2 Start
BEGIN TRANSACTION
UPDATE TableB Set Name = 'Priyanka From Transaction2' WHERE Id = 1001
-- Step2 End
-- From Transaction 1 window execute the Step3 section
UPDATE TableA Set Name = 'Anurag From Transaction2' WHERE Id = 101
Commit Transaction
Veți observa că după câteva secunde, una dintre tranzacții s-a finalizat cu succes, în timp
ce cealaltă tranzacție este aleasă ca victimă în impas, dând următoarea eroare.