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
Bar chart of rows written for one move on a list of 1,000 items: moving the last item to the top writes 1,000 rows when renumbering, 1,000 when shifting and 1 with gaps; moving item 500 to position 100 writes 1,000, 401 and 1; moving item 10 up one place writes 1,000, 2 and 1

Reordering a List in SQL Server: Move One Row, Write One Row

Reordering a list in SQL Server means changing a sort key, and the best design writes the fewest rows. This post compares three designs for dragging an item to a new place: renumber everything, shift the rows in between, and leave gaps. Each one is measured by rows written on a list of 1,000 items. Every result comes from SQL Server 2025.

Read More