ten pokazuje wszystkich baz danych z wyłącznym zamki przetrzymywany (które mogą obejmować przejściowe, które odbyło się w tym czasie uruchamiany jest), z użyciem sys.dm_tran_locks
DMV:
select d.*, l.* from sys.dm_tran_locks l
join sys.databases d on l.resource_database_id = d.database_id
where l.request_mode = 'X'
(X = wyłączne, S = współdzielonych, IS = Intent Shared) Zobacz Lock Modes.
Ale prawdopodobnie najlepszym sposobem jest włączyć śladowe Flagi 1204 i 1222:
flagę śledzenia 1204 i flagę śledzenia 1222 przypadku wystąpienia zakleszczenia, flagi śledzenia 1204 i flagi śledzenia 1222 informacje powrót że jest przechwycone w dzienniku błędów programu SQL Server 2005. Flaga śledzenia 1204 zgłasza informacje o zakleszczeniu sformatowane przez każdy węzeł zaangażowany w zakleszczenie. Flaga śledzenia 1222 formatów zakleszczenie informacje, najpierw według procesów i następnie według zasobów. Możliwe jest włączenie obu flag śledzenia w celu uzyskania dwóch reprezentacji tego samego zakleszczenia zdarzeń.
Ref Detecting and Ending Deadlocks
również prowadzony sp_who2
i wyglądają na wpisy w (blokowane przez kolumnę BlkBy
); wykonaj te czynności, aż dojdziesz do początku łańcucha impasu. To jest identyfikator procesu (lub PID) odpowiedzialny.
Aby dostać co SQL jest uruchomiony za pomocą specyficznego procesu można uruchomić:
dbcc inputbuffer (@pid)
i używać PID zabić proces (z rozwagą i na własne ryzyko):
kill @pid
sprawdź Who is Active? v10.00: DMV Monitoring Made Easy
przeczytać również Blocking is not Deadlocking (rozróżnić dwa scenariusze)
Naprawdę nie ma potrzeby, aby traktować temat jako pierwszą linię pytania - wszyscy to czytamy. Ponadto nie potrzebujesz czapek, tylko utrudnia czytanie. – Robert