Aaron Bertrand

Please stop using this UPSERT anti-pattern

There is a very common anti-pattern you should avoid, involving updating a row if it exists and inserting it if it doesn't. See how to avoid race conditions and deadlocks.

Sometimes you CAN upsize a column in-place

Altering a fixed-width column on a large table can often mean either a lot of planning or a lot of downtime, but in some scenarios there may be an easy out.

Troubleshooting error 18456

Updated in 2020 with a few new entries, this is a fairly comprehensive list of the reasons behind various 18456 error messages.

T-SQL Tuesday #128: Learn from others

For this month's T-SQL Tuesday, Kerry Tyler asks us to talk about something that went wrong. I had plenty to choose from, and went way back to ~2002 for this short story.

Measure Delayed Durability impact

In this tip, I show how to measure the positive effects of delayed durability, in cases where a small amount of data loss is acceptable.

Removing the default trace – Part 1

I start a series explaining how I evaluated the default trace and decided to replace it with a slimmer Extended Events session across all of production.

T-SQL Tuesday #123: Life hacks

This month, Jess Pomfret hosts T-SQL Tuesday, and asks us to talk about our own personal life hacks that make our day easier.

A minor office reorg – Part 1

I detail my home office setup, much of the gear in it, and show the progress of a minor renovation – a new standing desk and improved backlighting.

Using metadata to troubleshoot metadata

I show how I tried to chase down a very unexpected issue with SQL Server metadata. Spoiler: it didn't end the way I thought it would.

T-SQL Tuesday #121: Gifts

For this month's T-SQL Tuesday, I talk about an opportunity earlier this year to significantly change my career trajectory.