14/10/15

Come evitare e risolvere i deadlock in sql server

Spesso lavorando con Sql server ci imbattiamo durante una transazione in un messaggio criptico che dice:

Transaction (Process ID xxx) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.


Questo problema capita quando due processi si ostacolano a vicenda, cioe' uno attende l'altro per effettuare il lock.

La soluzione in questo caso è scrivere le query imponendo con la clausola in rosso un lock reale sulle tabelle come nell'esempio:


SELECT * FROM tabella WITH (XLOCK, ROWLOCK) WHERE chiave= xxx

Nessun commento:

Posta un commento

Cosa ne pensi?