Psaní kódu odolného proti uváznutí je opravdu těžké. I když přistupujete ke stolům ve stejném pořadí, stále se můžete dostat do uváznutí [1]. Napsal jsem příspěvek na svůj blog, který rozvádí některé přístupy, které vám pomohou vyhnout se patovým situacím a vyřešit je.
Pokud chcete zajistit, aby se dva příkazy/transakce nikdy nezablokovaly, můžete toho dosáhnout tím, že budete sledovat, které zámky každý příkaz spotřebuje pomocí sp_lock uložená procedura systému. Chcete-li to provést, musíte být buď velmi rychlí, nebo použít otevřenou transakci s nápovědou k pozastavení.
Poznámky:
- Jakýkoli příkaz SELECT, který potřebuje více než jeden zámek najednou, může uváznout na mrtvém bodě proti inteligentně navržené transakci, která zachytí zámky v opačném pořadí.