Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Tengo un error de bloqueo

Estas en el tema de Tengo un error de bloqueo en el foro de SQL Server en Foros del Web. Hola a todos: Tengo el siguiente error de bloqueo al realizar una consulta La transaccin (Id. de proceso 78) qued en interbloqueo en bloqueo | ...
  #1 (permalink)  
Antiguo 17/08/2011, 15:30
 
Fecha de Ingreso: agosto-2007
Mensajes: 268
Antigüedad: 16 años, 8 meses
Puntos: 2
Tengo un error de bloqueo

Hola a todos:

Tengo el siguiente error de bloqueo al realizar una consulta

La transaccin (Id. de proceso 78) qued en interbloqueo en bloqueo | búfer de comunicaciones recursos con otro proceso y fue elegida como sujeto del interbloqueo.

Es sobre windows server 2003 small business SP2
Y SQL Server Enterprise 2005

No me permite ejecutar algunas sentencias y no se como resolverlo.

Algun tip???

Saludos...
  #2 (permalink)  
Antiguo 18/08/2011, 04:19
Avatar de vrenzo  
Fecha de Ingreso: febrero-2007
Mensajes: 289
Antigüedad: 17 años, 2 meses
Puntos: 15
Pregunta Respuesta: Tengo un error de bloqueo

Cuando me se me presento un bloqueo... es que tengo un UPDATE que no he dado COMMINT... o que un SELECT no esta con NOLOCK (SQL2000)

__________________
***
Saludos.
  #3 (permalink)  
Antiguo 18/08/2011, 08:52
 
Fecha de Ingreso: agosto-2007
Mensajes: 268
Antigüedad: 16 años, 8 meses
Puntos: 2
Respuesta: Tengo un error de bloqueo

Gracias por responder

Voy a probar con ello
  #4 (permalink)  
Antiguo 18/08/2011, 10:29
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Tengo un error de bloqueo

Lo que debes hacer es RESOLVER el bloqueo y para saber quien esta bloqueando, ejecutas:

dbcc opentran (varias veces)

Esto te dara un numero de SPID que esta bloqueando, entonces ejecutas

dbcc inputbuffer(spid) -- Donde spid, es el numero de la conexion que bloque

Revisas que esta haciendo y haces las modificaciones pertinentes.
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 19/08/2011, 21:04
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: Tengo un error de bloqueo

Supone que tienes la tabla T1 con la fila F1, y una transacción que tiene bloqueada la fila (ej: por un update), y aparece una segunda transacción que solicita un bloqueo sobre la misma fila, en este caso el motor la pone en espera hasta que finalice la primera transacción y después le asigna el bloqueo a la segunda, esto es algo normal que se da constantemente, no genera errores aunque en casos excesivos afecta el rendimiento, esto lo puedes ver en el contador Lock Wait Time del Performance Monitor de Windows.

Un interbloqueo es diferente, si tienes la tabla T1 con la fila F1, la tabla T2 con la fila F1, una transacción TX1 que tiene bloqueada la fila T1.F1 y además solicita un bloqueo sobre la fila T2.F1, al mismo tiempo, tienes otra transacción TX2 con un bloqueo sobre la fila T2.F1 que solicita un bloqueo sobre la fila T1.F1, es aquí donde se produce un interbloqueo o deadlock ya que las dos transacciones están en espera de que se liberen las filas solicitadas y las filas no se liberan porque las transacciones no terminan. Como solución, el motor elige una transacción (generalmente la última en empezar) y la termina con un rollback. Esto es lo que ves en el log "La transacción (Id. de proceso 78) quedo en interbloqueo... y fue elegida como sujeto del interbloqueo".

En general los deadlock se producen por:

1. Errores de diseño, sea en procesos T-SQL batch, procedures, triggers, gestión de transacciones o modelo ER. Si este es el caso, tendrás deadlocks muy seguido, y como ya comentaron, deberás identificar que lo genera, el SQL Server Profiler puede ser muy útil, más info en http://msdn.microsoft.com/en-us/library/ms188246.aspx y http://msdn.microsoft.com/en-us/library/ms178104.aspx

2. Concurrencia, es muy poco probable que sea por una alta concurrencia de usuarios, pero posible. Si este es el caso, rara vez tendrás un deadlock, podrías analizar el problema, pero teniendo en cuenta que el motor resuelve los deadlock con consistencia, puede ser mas práctico ignorar el error y volver a ejecutar el proceso.

Saludos
  #6 (permalink)  
Antiguo 23/08/2011, 08:31
 
Fecha de Ingreso: agosto-2007
Mensajes: 268
Antigüedad: 16 años, 8 meses
Puntos: 2
Respuesta: Tengo un error de bloqueo

gracias iislas y matanga...estoy probando con la informacion que me pasaron

Etiquetas: bloqueo, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:30.