--prepare some data
create table t1(c1 varchar(10));
insert into t1 values('aaa');
insert into t1 values('bbb');
insert into t1 values('ccc');

--simulate a blocking scenario
--session 1
BEGIN TRANSACTION;  
update t1 set c1='AAA' where c1='aaa'; 
COMMIT TRANSACTION;   

--session 2
SELECT * FROM t1;	--Waitting...even a SELECT

--troubleshooting the locking
--method 1 - use sp_lock
select OBJECT_ID('t1')  --261575970

exec sp_lock
spid   dbid   ObjId       IndId  Type Resource     Mode     Status
------ ------ ----------- ------ ---- ------------ -------- ------
56     24     261575970   0      RID  1:313:0      X        GRANT
56     24     261575970   0      PAG  1:313        IX       GRANT
56     24     261575970   0      TAB               IX       GRANT
61     24     261575970   0      TAB               IS       GRANT
61     24     261575970   0      RID  1:313:0      S        WAIT
61     24     261575970   0      PAG  1:313        IS       GRANT

--method 2 - use sys.sysprocesses
select cmd,* from sys.sysprocesses where blocked > 0;
cmd              spid   blocked waittype waittime  lastwaittype  
---------------- ------ ------- -------- --------- --------------
SELECT           61     56      0x0003   1586691   LCK_M_S       

--check out the blocking session
exec sp_who2
SPID  Status        Login         HostName       BlkBy DBName   Command          
----- ------------- ------------- -------------- ----- -------- ---------------- 
56    sleeping      AD\15026      CNF002046        .   db2      AWAITING COMMAND 
61    SUSPENDED     AD\15026      CNF002046      56    db2      SELECT