Deadlock w MS SQL

0

Jest istniejący system informatyczny i są pewne procesy, nazwijmy A i B, gdzie jak się uruchamia te dwie transakcje, to może zdarzyć się deadlock (ale nie musi). Nie chodzi o dyskusję, czym jest deadlock i jak zmodyfikować procesy, żeby do nich nie dochodziło, tylko chodzi o doraźne prowizoryczne usprawnienie.

W takiej sytuacji serwer SQL musi uwalić jeden z tych procesów i do programu wywołujacego transakcję wróci komunkat błędu z systemu MS SQL.

W jaki sposób można wpłynąć na to, który proces zostanie uwalony w razie zakleszczenia? Np. mam procesy A i B, każdy uruchamia transakcję i chciałbym, żeby w każdym przypadku wystąpienia zakleszczenia między tymi procesami serwer uwalał zawsze proces A, a proces B zawsze przetrwał zakleszczenie.

Mam na myśli coś w rodzaju priorytetów czy atrybutów typu, że dany proces jest priorytetowy bądź, że dany proces ma niski priorytet. Doraźna naprawa miałaby polegać na dopisaniu wywołania zapytania SQL w ramach danej transakcji, który sprawi, że ta właśnie transakcja przetrwa zakleszczenie, a serwer uwali pozostałe, które ją blokują (a ona blokuje te pozostałe, bo na tym polega zakleszczenie).

3

Napisać kawałek kodu który wykona zapytanie.o loki i ubije odpowiedni proces w systemie albo polaczenie na bazie

1 użytkowników online, w tym zalogowanych: 0, gości: 1