How SQL Server Stores DATETIME2, DATE, and TIME
In I took a DATETIME apart byte by byte: two 4-byte integers, a date counted from 1900 and a time counted in awkward three-hundredths of a second. That awkward tick is exactly what Microsoft set…
How SQL Server Stores a DATETIME, Down to the Bytes
Every DBA eventually asks the same odd little question. You insert ‘2024-03-14 09:26:53.999’, read it back, and it says 09:26:54.000 instead. Store a value ending in .456 and it comes back as .457. Nothing is…
Upgrading Database Compatibility Levels Across a Whole Instance
The instance upgrade went perfectly. You moved from SQL Server 2019 to 2022, the installer turned green, the services came back up, and the application connected on the first try. A week later someone asks…
Why Resource Governor Ignores Your SQL Server Agent Job Owner
You did everything right. Resource Governor is configured, you have a workload group that caps CPU and memory so one runaway job cannot starve everything else, and you have a classifier function that reads the…
IS DISTINCT FROM: Comparing NULLs Without the Headache
It usually shows up in a code review. Someone writes a filter that is supposed to exclude voided rows, it looks completely reasonable, and yet a tester swears that records are going missing. The query…
Self-Contained Transaction Scripts in SQL Server: the @debug_only Pattern
A safer alternative to the commented-out COMMIT habit: a @debug_only flag, SET XACT_ABORT ON, a named transaction, and an XACT_STATE guard that never leaves a transaction open.