Deploy at Low Priority
Deploy SQL Server schema changes without a maintenance window using a WAIT_AT_LOW_PRIORITY-inspired loop that checks for SCH-S locks and bails out with GOTO.
Long-form notes on TSQL performance, Extended Events, Query Store and the tooling around them. Written from the trenches, not the slide deck.
Deploy SQL Server schema changes without a maintenance window using a WAIT_AT_LOW_PRIORITY-inspired loop that checks for SCH-S locks and bails out with GOTO.
Why SQL Server's fn_xe_file_target_read_file is so frustrating: an nvarchar(max) return type, broken timestamp filtering, and no efficient way to find rollover files.
How I configure SQL Server Management Studio: window layout, the Options settings that matter, essential hotkeys, and small productivity wins for DBAs.
How lock partitioning causes async stats updates to block during online index rebuilds with WAIT_AT_LOW_PRIORITY - full repro and the SQL Server 2022 fix.
SQL Server stores event_file data in the error log folder when no full path is given. Steps to find the current location and change it, on Windows and in Docker.
Creating the clustered index on an Indexed View blocked unrelated queries even under RCSI. The cause was Enterprise view matching, fixable with EXPAND VIEWS.
A CHECK or FOREIGN KEY constraint keeps reverting to untrusted overnight. Here is how to catch the BULK INSERT or bcp process doing it, with Extended Events.
Scalar UDFs silently force your query to run serially, killing parallelism. Even a reference through a view, computed column, or check constraint does it.
How to set up module signing with certificates in SQL Server for cross-database access - without ownership chaining. Complete walkthrough with diagram and follow-along example.
Aaron Bertrand has thrown a gauntlet on Twitter. Instead of commenting on how you do stuff differently, blog about it yourself. Well, challenge accepted!
DMVs and Query Store store the query hash as binary(8), but Extended Events shows a number, and the two refuse to match. Here's how to map between them.
The KEEP PLAN hint is supposed to relax recompilation thresholds, but the docs are vague. I test it against permanent and temp table statistics thresholds.
Combine an AFTER UPDATE trigger with Extended Events to surgically audit only the data changes you care about, cutting through thousands of modifications.
An IS lock appeared in a deadlock report on a database running RCSI - which shouldn't take shared locks. The culprit turned out to be an Indexed View.
Query Store defaults aren't exactly what the docs say. This post finds the real values using Extended Events and explains what Auto capture mode actually means.
Track down SQL Server errors using Extended Events. Capture the full calling stack, parse it with TSQL, and pinpoint exactly where failures happen.
I deployed a schema change to 30 servers using multi-server query and deploy-at-low-priority. Small servers with zero activity showed no progress, and then all 30 finished at the same time.
A fugitive cyber-criminal, a wingsuit, and 24 million flight records. Somewhere between Doha and Dublin, Krypto jumped between planes mid-air.
A cryptic message, a book cipher hidden in art provenance records, and a trail of clues leading to the leader of a shadowy cyber organization.
When I'm looking at a query, I bet it's bad if I see... a shopping list of red flags I've learned to spot, from AI-generated code to SSMS map mode gut checks.
A deleted podcast episode, 17 million archive log entries, and KQL's time series analysis to find the backup that was never supposed to survive.
Someone hacked Digitown's municipality and stole classified documents. 45 million rows of router traffic, an IP lookup table, and KQL's anomaly detection to find who did it.
I trusted AI to redesign this blog, be my personal assistant, and organize my life. But I won't let it near a production database. Here's why that's not a contradiction - and what I learned about trust along the way.