Technical Blog
Notes on SQL Server performance troubleshooting, AWS architecture, PowerShell automation, and AI-assisted DBA work.
The Time a Team Lead Asked 'What Changed in the Database?' and I Built a Schema Change Audit Trigger
A team lead couldn't tell a customer what changed at the sp/table/function level after a deployment. Here's the DDL trigger I built to log every schema change - old value and new value - so that question never has to be a guess again.
The Time I Set Up a Deadlock Alert That Emails You the Actual Deadlock Graph
How I wired an Extended Events session, a SQL Agent Performance Condition alert, and a stored procedure together so that the moment a deadlock happens, the team gets an email with the real deadlock XML attached - not just 'a deadlock occurred.'
SQL Server Cell-Level Encryption and Key Recovery
Protecting sensitive column values with SQL Server encryption, and planning master-key recovery before a migration or DR restore.
Tracking Database Growth Over Time: The Daily Snapshot Method I Use
How I log daily database file sizes into a history table to spot abnormal growth trends before they turn into a disk-space emergency - plus where I'd take this further with window functions, autogrowth event tracking, and proper alerting.
SQL Server Data File Shrink: Bounded Steps and Monitoring
A safer way to reclaim disk space from a large .mdf file when you're in an emergency and can't add storage - shrinking gradually in small steps instead of one large DBCC SHRINKFILE call, plus the cleanup work it creates afterward.
Reading SQL Server Wait Statistics Without Guessing
A practical starting point for using wait statistics to figure out what SQL Server is actually waiting on, instead of guessing based on CPU or disk graphs alone.
