• First, understand that blocking is normal, it's kind of like the locking latch on a bathroom stall door. There are 100+ different reasons why a process can be temporarily blocked. A process can even block itself.

    The following article described how to analyze wait statistics at a high level, and that's probably where you want to start.

    http://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/

    Only when a process has been in a blocked state for a significant percentage of it's duration or when blocking turns into a high level of queuing is there a reason to drill down on why specific processes are blocked. For this you can look at sys.dm_exec_requests, which gives you wait_type, wait_time, blocking_session_id (if it's blocked by another session's locking), etc.

    "Do not seek to follow in the footsteps of the wise. Instead, seek what they sought." - Matsuo Basho