Solución:
“A veces, esto se bloquea: dos subprocesos con consultas diferentes nunca terminan”
Lo que está experimentando es un bloqueo, no un punto muerto. Cuando ocurre una condición de interbloqueo, el servidor SQL la detecta automáticamente y elige una de las consultas como víctima y arroja el error 1205.
Si realmente está experimentando errores de interbloqueo, active el indicador de seguimiento 1222. Registrará los errores de interbloqueo en el registro del servidor SQL.
Si experimenta bloqueo, configure el “umbral de proceso de bloqueo” (http://msdn.microsoft.com/en-us/library/ms181150(v=SQL.90).aspx)
Consulte también http://www.mssqltips.com/sqlservertip/2429/how-to-identify-blocking-in-sql-server-2005-and-2008/
Debería poder verlos con SQL Profiler.
Vea este enlace http://msdn.microsoft.com/en-us/library/ms178104(v=sql.105).aspx
Además, si sospecha que una consulta causa su interbloqueo, puede intentar agregar la cláusula “SIN BLOQUEO”. Pero no debería ser una solución permanente.
En última instancia, debe tomar las diferentes consultas y ver por qué causan un bloqueo. ¿Quizás se puedan escribir de otra manera? ¿O optimizado? ¿O tal vez la estructura de la base de datos está en la causa?