Un deadlock es una situación que se produce cuando dos transacciones luchan por el mismo recurso, el resultado es tan feo como esto...
Transaction (Process ID 61) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Lo primero que hay que averiguar son las tablas en las que se están produciendo bloqueos, y los comandos que lanzan las transacciones.
Una vez más el infalible I.A. (y lo digo en el sentido más amplio de la palabra) me enseño como habilitar las trazas de SQL para que sea un poco más "verboso" de lo habitual.
dbcc traceon(1204,3506)
para comprobar el status
dbcc tracestatus
Una vez activada la traza, y reproducido el error, el resultado que deja en el LOG es el siguiente:
Deadlock encountered .... Printing deadlock informationWait-for graph
Node:1
TAB: 2:2009058193 [] CleanCnt:1 Mode: X Flags: 0x0
Grant List::
Owner:0x1c3b5260 Mode: X Flg:0x0 Ref:1 Life:02000000 SPID:52 ECID:0
SPID: 52 ECID: 0 Statement Type: SELECT Line #: 1
Input Buf: Language Event: select * from a (tablockx)Requested By:
ResType:LockOwner Stype:'OR' Mode: X SPID:51 ECID:0 Ec:(0x1c657890) Value:0x1c3b51c0 Cost:(0/0)Node:2
TAB: 2:1993058136 [] CleanCnt:1 Mode: X Flags: 0x0
Grant List::
Owner:0x1c3b52e0 Mode: X Flg:0x0 Ref:1 Life:02000000 SPID:51 ECID:0
SPID: 51 ECID: 0 Statement Type: SELECT Line #: 1
Input Buf: Language Event: select * from b (tablockx)Requested By:
ResType:LockOwner Stype:'OR' Mode: X SPID:52 ECID:0 Ec:(0x1c593890) Value:0x1c3b5380 Cost:(0/0)
Victim Resource Owner:
ResType:LockOwner Stype:'OR' Mode: X SPID:52 ECID:0 Ec:(0x1c593890) Value:0x1c3b5380 Cost:(0/0)
Variatio delectat - There's nothing like change! (Cicero)
Impossibilium nulla obligatio est - Nobody has any obligation to the impossible. (Corpus Iuris Civilis)
Quod erat faciendum - Which was to be done
Gloria virtutis umbra - Glory (is) the shadow of virtue
Quid rides? Mutato nomine de te fabula narratur - Why do you laugh? Just change the name and the tale is told of you. (Horace)
Quod erat faciendum - Which was to be done
Nemo liber est qui corpori servit - No one is free who is a slave to his body