Het schrijven van deadlock-proof code is echt moeilijk. Zelfs als je de tabellen in dezelfde volgorde opent, kun je nog steeds deadlocks krijgen [1]. Ik heb een bericht op mijn blog geschreven waarin enkele benaderingen worden toegelicht die je zullen helpen om impasses te vermijden en op te lossen.
Als u er zeker van wilt zijn dat twee verklaringen/transacties nooit vastlopen, kunt u dit mogelijk bereiken door te kijken welke vergrendelingen elke instructie verbruikt met behulp van de sp_lock systeem opgeslagen procedure. Om dit te doen, moet je ofwel heel snel zijn of een open transactie gebruiken met een holdlock-hint.
Opmerkingen:
- Elke SELECT-instructie die meer dan één vergrendeling tegelijk nodig heeft, kan een impasse raken tegen een intelligent ontworpen transactie die de vergrendelingen in omgekeerde volgorde grijpt.