Blocking & deadlocks

Blocking happens when one transaction holds a lock another one needs. Brief blocking is normal; long blocking is a common reason for "the application hangs".

Current blocking

Blocking → Current shows live lock chains in real time: which session blocks which (blocker → blocked), including the statements involved. That's how you find the head of the chain – the session holding everyone else up.

History

Blocking → History stores past blocking events so you can spot patterns (e.g. always at the same time, always the same query) even when the problem isn't active right now.

Deadlocks

A deadlock is mutual blocking: two sessions each wait for a lock the other holds. SQL Server resolves it by aborting one as the victim.

Blocking → Deadlocks reads deadlock events from the system_health Extended Events ring buffer, draws the deadlock graph and shows the statements and resources involved – the basis for fixing the root cause (e.g. access order).

Blocking tells you who is waiting; the queries involved tell you why. To tune the offending query, use Query analysis.