Blocking — Complete Guide
Blocking — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of SQL Server Tutorial on Toolliyo Academy.
On this page
SQL Server Tutorial · Lesson 55 of 100
Blocking
SQL basics ✓ → Queries → Advanced
Queries · 2 — JOINs · ~10 min · SQL — Transactions & Concurrency
What is this?
Blocking happens when one session holds a lock another session needs. The waiter sits until the owner commits, rolls back, or times out.
Why should you care?
Users see spinners; DBAs see head blockers. Finding the blocker is step one.
See it live — copy this example
Run in SQL Server Management Studio (SSMS) or Azure Data Studio.
-- Window A:
USE DataVerse;
BEGIN TRAN;
UPDATE dbo.Accounts SET Balance = Balance WHERE AccountId = 1;
-- do not commit yet
-- Window B:
USE DataVerse;
UPDATE dbo.Accounts SET Balance = Balance WHERE AccountId = 1;
-- waits
-- Investigate:
SELECT session_id, blocking_session_id, wait_type, wait_time
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;
What happened?
- Window A holds the exclusive lock; B waits.
- dm_exec_requests shows who blocks whom.
- Commit or rollback A to free B.
Practice next
- Reproduce with two windows.
- Run the blocking query.
- Commit A and confirm B finishes.
- Set LOCK_TIMEOUT 3000 in B and watch error 1222.
- Enable RCSI to reduce reader/writer blocking (lab).
Remember
Blocking = lock waits. Find blocking_session_id. Shorten or reschedule the owner work.
Black Friday checkout stall
A stuck DataVerse admin transaction blocked stock updates.
Outcome: Ops killed the blocker after confirming it was idle.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!