SQL Server upgrades and hard-boiled eggs. What do these two things have in common? Probably nothing, but last week Jon and I were having a conversation about an upgrade I need to do for one of our clients. Now I can’t go into specifics because of the NDA, but I can give you some of the pieces:
It’s a two-node cluster, there are two instances of an older version of SQL Server Standard Edition, they want to upgrade to a recent release of SQL Server, there’s replication involved…and we may or may not reuse the existing servers.
Now, I like talking through different options for this kind of challenge with someone else on the team, and Jon loves this type of thing. I love solving problems, it’s one of my favorite parts of my job. I think that Jon thrives on it. We’ll discuss some project or process and I will have an idea for how to do it, and then three hours later I’ll get another email or a phone call from Jon that starts with, “Well you could also…”
Our conversation about upgrading was interspersed with a conversation about getting into better shape and eating better (yes I’m usually going in three directions at once, aren’t we all?), and Jon mentioned hard-boiled eggs because they are a good breakfast protein. I asked him if he was still buying them already boiled…because he used to do that. He said no (hooray!), that one of his friends now boils them for him in big batches (nice friend!). Then he mentions how difficult it is to boil eggs.
And I’m thinking, “Are you kidding me?” He’s one of the smartest people I know and boiling eggs is a challenge? So I sent him the steps below, which is this which is an adaptation of instructions provided in Cook’s Illustrated (great cooking magazine if you’re interested):
- Place eggs in a large pan and enough cold water so that it’s at least 1” above the eggs. Add a splash of vinegar.
- Place on burner and set to high.
- When the water starts to boil, set a timer for 5 minutes.
- When the timer goes off, turn off the burner, set another timer for 7 minutes, let the eggs sit in the hot water.
- When the timer goes off the second time, drain the hot water, fill with cold water and ice.
- Let sit for a couple minutes, then either drain and put in the fridge, or peel and eat.
And Jon replies with this (yes I know the image is large, it’s so you don’t have to click on it to read the text!
I laughed. A lot. I was thinking, “I’ll take boiling eggs over an upgrade any day, no matter how much I love SQL Server.”
And then yesterday I decided to boil a couple eggs for breakfast. I put them in the pan with plenty of water and a splash of vinegar, turned on the burner, and then went to my office (just 20 feet away) to work on my Insider Video. Forty minutes later (yes, 40) I remembered the eggs. I forgot to set a timer. I always set a timer, but yesterday I just forgot. I ran to the kitchen…there was about an inch of water left in the pan. I was lucky. Nothing destroyed, the eggs were even edible! But here’s the thing…
It doesn’t matter how many times you’ve done something before, and how well you know the steps involved and KNOW that they work. Sometimes unexpected events happen or a single step gets missed that causes a problem (or a disaster).
Need a real-life example? Jon had a customer that wanted to remove partitioning for a huge table. They had gone through the steps many times in a Test environment, and they were all documented. When it came time to run the process in Production, however, the step to disable the nonclustered indexes on that table before removing partitioning was missed. As a result, the nonclustered indexes (on that extremely large table) were rebuilt three separate times. The step was in the documentation, and had been done during the tests, but for some reason wasn’t done during the process in Production.
So back to that upgrade…we’re still planning for it. If I get approval from the customer, I’ll share the details and let you know how it goes. Until then, keep making those checklists and testing your upgrades. You just never know what’s going to happen.