What makes you think you are getting a table lock? Its true that SQL Server does aquire a lock when issuing a select statement, but this is a shared lock, so should only block delete statements. How did you determine a lock is your problem?
Yes, it sounds like you have diagnosed this correctly (I had to ask - people oftem mistakenly assume something is a lock without checking ).
You say the process that is causing the block is in the waiting state? Of the top of my head, I think this means that SQL Server is waiting for the client to do something, rather than it is waiting for another resource it manages to be freed (this is worth double-checking, since I only vaguely remember all the various process states). The only time I've seen similar behaviour is when I'm debugging (so pausing in a debug session is also causing a block in SQL Server) or when a client transaction is not properly ended. Are you using JTA with your applciation? [ February 15, 2007: Message edited by: Paul Sturrock ]