Rewrite OR conditions with separate seeks, preserve duplicate and NULL behavior, and compare plans before choosing UNION or recompilation.
SSRS Parameters That Do Not Slow Reports
SSRS parameters work best with selective defaults, compact value lists, and SQL queries that preserve useful indexes under real filters.
Why DBCC SHRINKFILE Crawls and How to Watch Its Progress
Explain why DBCC SHRINKFILE can take hours, monitor percent_complete and waits, and use TRUNCATEONLY before small steps.
SQL SERVER – How to Add an Identity Column Using the IDENTITY Property
How do you add an identity column to a table in SQL Server? I explain three cases using the IDENTITY property, including why a second one fails.
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.
Compatibility Level 170: What SQL Server 2025 Turns On
Move to compatibility level 170 on SQL Server 2025 with feature checks, Query Store baselines, plan comparisons, and a rollback plan.
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.







