SAVE TRANSACTION sets a marker inside an open transaction. You can roll back to it and keep the earlier work. This post tests it on SQL Server 2025. It shows why a nested BEGIN TRAN can’t do the same and what XACT_STATE() returns after an error.
SQL SERVER – NOLOCK with DMVs
NOLOCK with DMVs is not a blanket reassurance against monitoring waits. A customer asked about omitting the hint.
Before You KILL a Session: Estimating the Rollback Cost
Before you KILL a session, inspect its transaction age, log bytes, current command, and likely rollback work, then monitor the undo safely.
Finding the Indexes Behind Lock Waits With Operational Stats
Rank indexes behind lock waits with operational stats, separate latches from locks, and test targeted access or row versioning fixes.
Deadlock Victim Selection: Protect One Transaction
Deadlock victim selection decides which of two blocked transactions SQL Server rolls back. This post shows the rules, sets DEADLOCK_PRIORITY on one procedure, reproduces a deadlock with two query windows, and shows what the setting cannot do. It ends with the two fixes that remove the deadlock itself.
SQL SERVER – Blocking Tree – Identifying Blocking Chain Using SQL Scripts
Whenever I end up on a situation where we have lots of blocking issues with my client, I depend on the script of the Blocking Tree.
Reading Deadlock Graphs From the system_health Session
Read deadlock graphs from system_health, identify victims and resource owners, reproduce a two-session cycle, and choose a targeted fix.







