Two sessions race for 2,000 rows: the check-then-update version leaves 254 rows with two winners, and the one-statement version leaves 2,000 rows with exactly one winner each

Record Checkout in SQL Server: A Visible Lock With an Expiry Time

Record checkout puts the name of the editor and an expiry time on the row, so a screen can show who has it. This post builds it with one UPDATE and proves it with two sessions that race for 2,000 rows. A check-then-update version gives some rows two winners, and the one-statement version never does. It also covers expired locks, late saves and check-in. Every result comes from SQL Server 2025.

Read More
Two sessions in a deadlock: Session A updates Tea then Honey, Session B updates Honey then Tea, each waits for a lock the other holds, Session A gets error 1205 and retries, and the saved run shows try 1 error 1205 after 3,939 ms and try 2 committed with Tea 98 and Honey 102

Retrying a Deadlock Victim: When the Retry Helps and When It Hurts

Retrying a deadlock victim works when the retry repeats the whole transaction. This post builds a bounded T-SQL retry for error 1205 and tests it against a real deadlock between two sessions. It then shows two cases where a retry does harm: inside an outer transaction and on an error that is not a deadlock. Every result comes from SQL Server 2025.

Read More