Znalezienie lockowanego rekordu po RID lub hash value przy użyciu wirtualnej kolumny %%lockres%%

Często gęsto analizujemy jakiegoś locka. Dowiadujemy się jaki jest jego RID

lub hash klucza:

I zadajemy sobie teraz pytanie…

OK, wiem która to baza, wiem który to obiekt. Ale skąd mam wiedzieć o jaki rekord może chodzić??

 

Z pomocą przychodzi wirtualna nieudokumentowana kolumna %%lockres%%, która zwraca właśnie powyższe wartości 🙂

 

Przykład:

Tworzymy tabelkę dostatecznie dużą i sprawdzamy zawartość:

 

Ok, pora na locka. Tabela jest w tej chwili stertą. Sprawdzamy jaki mamy SPID i wykonujemy update w transakcji, której nie zamykamy:

 

Otwieramy drugie okno i sprawdzamy locki dla sesji 73:

 

Sprawdzamy zatem, co kryje się pod magicznym 5:75840:0  ?

 

 

Wykonujemy w pierwszym oknie rollback, następnie zakładamy klucz główny.

Wykopnajmy teraz UPDATE wiersza np 8:

W drugim oknie sprawdzamy znów wynik sp_lock 73:

 

Tym razem mamy exclusive na kluczu, tylko że jest to jego hash. Nie wiemy co kryje się za c9fb1da9313f , ale również możemy to sprawdzić:

 

Dodaj komentarz