Error de interbloqueo en TRANSACCION ???

11/06/2005 - 12:39 por Quark | Informe spam
Hola Grupo, alguien sabria orientarme de porque de forma aleatoria se
produce este mensaje

"SQL State 40001, SQL Error Code: 1205. La transacción (Id. de proceso nº 8)
ha quedado en interbloqueo con otro proceso y ha sido elegida como sujeto
del mismo. Vuelva a ejecutar la transacción".

Tengo un proceo trabajando en el servidor, analizando datos y actualizando
una tabla, segun los datos analizados. (Este proceso es el que produce este
mensaje)

En las máquinas clientes, trabajan con una aplicación que interviene, en
determinadas acciones, con la tabla que el proceso del servidor actualiza.

Como se pueden evitar estos interbloqueos ???

Gracias anticipadas !!!

Saludos

QUARK
 

Leer las respuestas

#1 Alejandro Mesa
11/06/2005 - 14:25 | Informe spam
Los deadlocks ocurren cuando dos procesos estran bloqueandos diferentes
recursos y ambos procesos reclaman bloquear el recurso que el proceso opuesto
ya tiene bloqueado. Algo asi como:


begin transaction

update t1 ...

select ... from t2

commit transaction

begin transaction

update t2 ...

select ... from t1

commit transaction

como veras si ambos procesos corren simultaneamente, cuando "A" reclame
tabla "t2", proceso "B" la tendra bloqueada y al mismo tiempo, cuando proceso
"B" reclame tabla "t1", proceso "A" la tiene bloqueada, por lo tanto ambos
procesos quedaran esperando a que el otro proceso desbloquee el recurso pero
mientras la transacdcion no termine esto no pasara y ambos quedaran en un
lazo infinito el cual es detectado por sql server y mediante una formula
interna, sql server decidira cual de los dos procesos sera el elegido para
ser terminado.

En principio se debe tratar que los procesos accesen los recursos en el
mismo orden, que las trasacciones sean lo mas corta posible (duracion).

Debes detectar los procesos y recursos involucrados y tratar de
reorganisarlos.

Aca te adjunto un link a un hilo donde se habla de como logear los deadlocks.

http://support.microsoft.com/newsgr...sloc=en-us

Tips for Reducing SQL Server Deadlocks
http://www.sql-server-performance.c...dlocks.asp

No olvides buscar el tema "deadlocks" en los libros en linea.


AMB


"Quark" wrote:



Hola Grupo, alguien sabria orientarme de porque de forma aleatoria se
produce este mensaje

"SQL State 40001, SQL Error Code: 1205. La transacción (Id. de proceso nº 8)
ha quedado en interbloqueo con otro proceso y ha sido elegida como sujeto
del mismo. Vuelva a ejecutar la transacción".

Tengo un proceo trabajando en el servidor, analizando datos y actualizando
una tabla, segun los datos analizados. (Este proceso es el que produce este
mensaje)

En las máquinas clientes, trabajan con una aplicación que interviene, en
determinadas acciones, con la tabla que el proceso del servidor actualiza.

Como se pueden evitar estos interbloqueos ???

Gracias anticipadas !!!

Saludos

QUARK




Preguntas similares