Or, another week in the life of a DBA and other duties as assigned
So a few weeks ago a developer at a client of mine reported that some recently deployed code wasn’t working. I tried it and of course it worked for me. That isn’t unusual since I have sysadmin rights on that box. I tried execute as using her ID and it failed. Not uncommon, sometimes in production permissions don’t get promoted the way they should. So I checked her permissions and the permissions of the users actively trying to call the stored procedure. Strangely, they all had the proper permissions, at least as far as I could tell. Then I had that lightbulb insight and realized I had been misinterpreting the error message execute as was giving me. “The server principle “DOMAIN\USerXYZ” is not able to access the database “ImportantDB” under the current security context.”
I realized I had been troubleshooting the wrong problem. It wasn’t that the person didn’t have permissions to execute, it was that no one other than sysadmins had the right to CONNECT to the database. A simple:
GRANT CONNECT SQL
And all was good to go! Or was it? It took us some digging to figure out why this had happened on a production database. Apparently when the database was designed in Dev, the developers had the rights they need to connect, so never thought about who else might need to connect. Apparently they had created it with very limited Grant Connect rights. When the database was moved to production, in this case, with a backup and restore the same lack of rights moved upstream with it.
Now, in the opposite direction, a vendor wanted to send a file to my client in their UAT environment. I fired up the PowerShell script to retrieve the file and decrypt it. The decryption failed. It took me awhile to figure out the problem. The client has a rule that every 2 years we must upgrade our RSA Public Key with them. Ironically, I had just completed the most recent update last month and moved it into production. Apparently though, their rule doesn’t apply to their UAT environment. Which came as sort of a shock to me, since they’re always so insistent on us following their security requirements. Of course beyond the irony of them not following their own rules, the file they had asked we download, wasn’t there.
The PM contacted them and they assured him the file would be there on Friday. Well here it is Tuesday and we’ll see if this time the file is there.
In any case, this time, the problem wasn’t promoting a change from UAT to PROD, but the client’s failure to move a change from PROD to UAT.
Such is life.
So sometimes I’m the creek without the paddle and sometimes I’m down the creek…
I think I speak for many DBAs when they say they’ve all had a programmer tell them, “The database is too slow, we need faster hardware.” Then as a DBA, you go in, look at their query and realize they’re running a table scan across a huge 100GB plus table without any indices. You analyze the data and overall usage further and decide to put in an index and suddenly their query is running in sub-second times instead of minutes.
Or, in a case I was working with with a client years ago, they had a stored procedure that sometimes would suddenly get slow. Their solution was to occasionally issue a WITH RECOMPILE command when calling it and things would get better. It worked, but was hardly ideal. After analyzing the stored procedure and usage I realized that it was suffering from a form of parameter sniffing and with a bit of work I was able to recommend a rewrite that solved their problem in a better way.
What is critical here is understanding HOW exactly data is stored and how the query engine works and how we can take advantage of how the database engine works to improve things.
And honestly, for me, I’ve always loved understanding “how things work.” I’ve marveled at seeing Bob Ward open up the debugger, live on stage, and show how a particular piece of code in the SQL engine works.
And now, I’m starting to undergo the same journey in the human body.
Let me caveat things by saying I am only half-way through my Anatomy & Physiology I class (and same with my Bio I class) and I greatly recognize how much more I have yet to learn (and that’s only out of what we know. We’re still learning more!)
However, I continue to be blown away with “how things work.” Mother Nature has had millions and millions of years to make things work. What strikes me as interesting at times is how both conservative and ingenious things can be. We all start from a single cell that divides and forms a sphere of cells. This soon forms a neural tube and then starts to specialize further. Somehow from that single cell we end up with our feet at one end and our skull at the other, completely different, but from the same source.
But, even then when you dig deeper you realize that at some level hands are really feet, but with an opposable joint and far more flexibility and dexterity. The internal structures are very similar. Then you move up to the arms and legs and realize even the limbs start out fairly similar: the upper limb has a single main bone and the lower limb has two bones. Of course the joints start to differ, a knee joint is VERY different from an elbow joint. Nature is conservative.
This week we started to study skeletal muscles and how they work. This builds on earlier lessons in both the parts of a cell and histology. A generic animal cell has sort of a skeleton made up of fibers the cell produces. These fibers can come in one of several forms. In most cases they’re simply there to give a certain structure to the cell, or perhaps via the use of other proteins, connect to other cells. They often may look haphazard in design and function, but they get the job done.
Until you look at skeletal muscle. Then you see two of the fibers are laid out a bit differently. One, the thin “actin” fibers are laid out radially around larger fibers, the myosin. You may see these fibers in other cells, but in muscle cells their layout is different. And this makes all the difference. The myosin fibers have “heads” on them that can, in the right circumstances both attach to the actin fiber, but also essentially pull on it by flipping its head from a “forward” to a “backwards” position. The head can then release, flop back to its original position, grab the actin again, and again flip back to the tail facing position. I’ve left out a lot of details, but if you think of yourself using both hands to pull upon a rope, you get the same basic idea. Or, for the caving readers among me, it’s a pair of handled ascenders and it’s basically using a Texas system!
To me, this is really an ingenious re-use of existing structures inside the cell. The more I learn about the human body (or biology in general) the more I’m amazed.
I’m loving “seeing under the covers” and this is part of it!
From the first day of classes I’ve worried about a week like this. I think I’ve mentioned I’m only taking three of the prereqs I need to apply to PA school. That’s not a horribly heavy load, but this week everything came to a head at once.
Monday – Anatomy & Physiology I Exam
Tuesday – Bio I Exam
Wednesday – Bio Prelab due and Bio Lab Quiz
Saturday – General Psych Exam Due
Sunday – General Psych Paper Due
Literally the only thing that’s NOT happening this week is my A&P lab quiz on bones and their facets and attachments points and more. I suppose I should be grateful for small favors.
And to make things worse, none of my study group for A&P was available this weekend.
Now fortunately, the General Psych paper can be submitted for review early, so I knocked that out Saturday morning and got feedback by Sunday night. So I’ll upload that shortly. And the General Psych test is online and available starting tomorrow night, so I can put off studying for that a bit and take it at my convenience.
And finally, the Bio Prelab is almost literally cut and paste and can be submitted on-line. So that’s been knocked out.
But the A&P I and Bio I exams: those made me nervous. Fortunately they’re mostly multiple choice, with the Bio exam having some essay questions.
I’ve always been a decent test taker, but I have to admit, multiple choice does make things easier. In fact, one of the topics we covered in General Psych last week is memory and how recognition is “easier” than recall. i.e. it’s a bit easier to see 4 possible answers to a question and recognize the right one than to be simply asked the question and have to recall the information and write it down.
That said, for me, one thing I often like to do when taking a multiple choice test is see if I can think of the right answer before I actually see the choices, i.e. make use of recall to reinforce my recognition. This gives me more confidence when I eventually choose my final answer.
And if you add to this the fact that there are actually skills one can learn when taking multiple choice tests, such as recognizing distractors, knowing certain answers are simply wrong and sometimes being able to think through to the right answer.
This came into play on question on yesterday’s test. I went back and checked all my answers before handing in the Scantron (yes, they still use them!) and had marked a few for “definitely look at” and one I wasn’t 100% sure on. But I was able to rule out two answers of the 4 and was down to two answers. I had initially checked one of them, but the more I thought about it, the more I realized the other was the right one.
So, one test down, another in an hour and then on to the rest. Wish me luck.
I wrote last year about how my job title seems to be DBA and other Duties as assigned. A little incident yesterday got me thinking about that again. This time though, it got me thinking more about the DBA side of that title.
I’ve mentioned before I’ve written a number of ETLs for various clients. Some are fairly complex and some are fairly simply PowerShell scripts. In most cases, at the end of the script I send an email with a success or failure status and some additional information if appropriate.
Over the last two weeks I had noticed that the email for one particular ETL was coming in later and later. I finally found somet time to investigate. I looked at the destination table and noticed that some of the tables had extremely large numbers of rows. Now, my first inclination was that the source data had increased (which would be a good thing, it meant the client was basically selling more widgets). But the increase seemed too dramatic and large. My next thought was perhaps the export itself was simply giving me more data.
So I decided to look more closely at the data and I noticed something interesting. Picking on of the tables at random, I simply did a
select * from RandomTable order by GoodIndex
SSMS returned approximately 24,000 rows. But something stood out. There appeared to be duplicates rows. Lots of them. This raised a lot of suspicions.
I then ran the query on my UAT box which in this case actually loads a copy of the production data. I got back about 1,600 rows. VERY curious.
Back on production now I ran
select distinct * from RandomTable order by GoodIndex
This time I got back the same number as UAT. Extremely curious.
Then it dawned on me, about 2 weeks ago, we had made a change to where the script looked for the source data, a number of CSV files. UAT had not changed, but Prod had. The reason for this change was to be able to get the ETL PowerShell script to run on the proper production server (the original location had security issues reading from the original CSV file location.)
So my first thought was that the team that had updated their export had somehow left out the command to delete the old file and was simply appending. I was about to write a pointed email when I stopped myself.
I looked at my code and realized that when I had setup the script on the new production box, I had properly handled all the permissions except one: the step that truncated the destination table. Sure enough, my code was no longer truncating the table before I inserted new information. Fortunately I realized my mistake before sending that pointed email.
So was this a DBA issue or a “other duties as assigned” issue? I don’t know, but I’d say as a DBA I should have not created the problem in the first place, but thankfully, due to proper logging and emails I was able to catch it and solve it fairly quickly.
Moral of the story: Pay attention to details. Notice when things start to drift. They can be the sign of a larger issue.
Many weeks I struggle with what I plan on writing about, but this post came to me last Thursday or Friday. It was clear to me that I should write about 2022 SQLBits.
Now, the more astute of you are probably thinking, “But Greg, you weren’t there. How can you write about it?”
Well you’re right. I’m not going to write about my experience attending it. Rather I’m going to write about my experience not attending it.
I had applied to speak at SQLBits, but didn’t make the cut this year. That happens. But this time there was more than mixed feelings. Had I been selected, I almost certainly would have tried to find a way to do so in person. However, as many of my readers know, I’m back in school taking classes as prereqs to get into PA school. And frankly, I’m loving it. But it is taking time and focus. This week, March 14-18 is Spring break for my fellow students. But last week I did have classes and I’m not sure I could have taken the time off to fly to the UK. And I’m not sure I would have wanted to; if only because of missing my A&P I lab this week (learning about the bones of the head and spine, including the axis and atlas (C1, C2 vertebrae).
So in a sense, I’m almost grateful that I wasn’t chosen to speak. It solved me the pain of trying to solve the dilemma of do I attend in person or not?
But dang, did I miss people. I saw posts from so many of my #SQLFamily that I was sad I couldn’t see them in person. And then, looking at the calendar, it dawned on me, I’m not entirely sure I can make the PASS Summit this year, again due to classes.
It just drove home how much so many of you have become family and how much I miss so many of you. And in some ways its just the start. As my plans continue, I’ll find myself making the slow transition from the #SQLFamily to hopefully a #PAFamily or whatever community I find there. And while I have often found myself in many communities, for example besides #SQLFamily I’m also heavily involved with the NCRC and plan on continuing my efforts there, I know over time my active involvement in #SQLFamily will slowly diminish. That said, I’m not walking away just yet and will continue to be involved as much as I can, both in presenting when I can and in running my local user group.
But that said, I miss you all. And do look forward to seeing any of you when I can.
Today is International Women’s Day. I was reminded of this from a semi-unrelated post by a fellow #SQLFamily member, but this post is an intersection of a variety of Facebook posts and discussions I’ve had over the past week that touched upon women’s health. In the interests of privacy and protection I am going to anonymize a bit what happened. I’ve mentioned in past posts how we as DBAs have to take into consideration topics such as gender and more. We’re here to describe the world, not to prescribe it. But, if my hoped for career change to become a Physician’s Assistant passes, topics of women’s health will become even more important for me to take into account.
Let me start with the first discussion I had: menopause and Nuvaring. A friend mentioned she’s going through menopause and her physician had suggested the Nuvarin as a form of hormone replacement to help reduce the effects such as hot-flashes. She looked into what her insurance covered and found out that it would cost I believe $360 for 3 months of coverage. But, Viagra was free. That’s health insurance in America. Want to get an erection, if you have good health insurance, it’s free. Want to avoid feeling like you need to rip off your clothes in public because you’ve gone from cold to sweating hot in seconds, sorry that’ll cost you $120/month! Perhaps it’s time to rethink how we allocate some of our funds.
The other discussion that came up was someone that I know more vaguely, but who is a trans-woman. She mentioned how doctors have turned her away. Pharmacies have refused to fulfill prescriptions for her that they routinely fill for cis-women. In general, because in their minds her physical presentation doesn’t match their expectations, they treat her as an outcast. Let me be simple and blunt: I’m offended and angry. She deserves access to the same treatment as any of the cis-women around her (and as the above discussion suggests, women in general deserve better treatment).
Writing this, I realized, I lied a bit, unintentionally. The above paragraph was prompted by a particular post, but I know several women to whom it could apply. So no need to try to guess who she is among my friends. She could be and is in fact a compilation of several.
Before I close, I want to recommend a Youtube channel I spend some time on: Dr. Momma Jones. While I don’t think my specialty will involve Ob/Gyn (I’m more interested in emergency medicine), I love watching her posts because I learn a lot, both medically and about gender bias and topics that I’m generally less familiar with.
That said, in closing, if I become a PA, I will work at treating all my patients equally and equitably and to the best of my abilities, regardless of their identity. Even if I don’t become a PA, I will continue to work to fight for the rights of all and to treat all equally and equitably .
So on International Women’s Day, let’s celebrate and remember all women.
P.S. and in the meantime, let’s fight against the rules put in place in Texas regarding medical treatment and discussion around trans-children and against the “Don’t Say Gay” law being voted on in Florida. I will say right now: children will die because of these rules. They will commit suicide.
Today’s T-SQL Tuesday edition comes from Rie Merrit and she is asking about “Advice on Running a User Group.”
Fortunately she’s only asking for 1-2 ideas, not an entire book (though there’s at least one book out there on the topic, which I’ll admit I’ve skimmed but not read cover to cover).
It Starts at the Door
This is actually an area I’ve not done as well in as I’d like, but I’m going to continue to work on. For your in-person meetings (we remember what those were like, right?) find one of your more outgoing, sociable members, ideally someone who is good with names and details, and position them by the door to greet people. When someone new comes in, this person should make sure they get their name, ask them if they have any particular interests, and then introduce them to others, ideally with similar interests.
It can be very intimidating to walk into a new User Group meeting where you know no one, and every already there is already happily chatting away and you end up feeling like an outsider.
By assigning someone to the role of greeter, ideally any new person instantly can be made to feel welcome. Besides simply introducing them, the greeter can explain how things work in terms of schedule, where the bathrooms are, where food is at, etc. This keeps newcomers from feeling lost and left out.
On the flip side of this advice, the greeter has to make sure they’re not too enthusiastic either. If the newcomer indicates they’d rather just sit in the corner and listen and leave, that’s fine too. The goal isn’t to force everyone to socialize. The goal is to make it easier for those who wish to.
I can guarantee that if you make people feel welcome, they’re more likely to come back.
It Pays to have Sponsor
Or more accurately, its sponsors that make it possible to pay for food and other costs. Several years ago at a User Group Leader meeting at PASS Summit, I listened as a speaker talked about looking for sponsors you might not normally consider, i.e. going outside of getting sponsorship from technical companies. This has worked really well for me in the past. But before you even go that far, you need to get some data. And since we’re DBAs, we should be good with data. I recommend once a year, collecting data about your group with some questions such as:
How many people receive your weekly or monthly emails. You don’t need an exact number, but is it 100, 300, 500, 1000?
How many people typically attend your meetings? (and now ask in-person versus on-line if you’re doing hybrid)
Where are they coming from?
How many years have they been in the industry?
Do you have a breakdown by age range?
You’re trying to get a sense of demographics. This will come in handy when you look for sponsors that are non-technical (for technical sponsors you will want different demographics). But with the data from my group, I have approached a number of different sponsors such as banks, insurance agencies and the like. My sales pitch is generally along the lines of:
I can put your name in front of 400 people via email and 20-30 people in person that are in your demographic (generally 40-50 years of age, higher income) that are probably in the market for your services (such as life insurance, investment opportunities, etc).
I’ve had a lot of luck with this approach. Sometimes I’ve gotten a check right there, sometimes they’ve had to go up their chain of command, but now they have data to sell the idea to their boss. And sometimes, you find out a prospect is not a good match. This happened with me when I approached a contact at the local, then new casino. Turns out their target demographic was older, retired women. Apparently they spend a lot of time and money at the casino. In contrast, mid-life professional DBAs don’t gamble much!
The other key detail when approach a sponsor is being clear on what you’re selling them. You probably recognize this without really realizing it. At any conference you’ve been to you’ve seen Platinum Sponsors, Gold Sponsors, etc. The more someone is willing to pay, the more mention they get, the bigger their logo may be featured, etc. This works for user groups. My advice here is to not overdue the number of sponsorships and to deliver on what you promise. For my group, pre-Covid, I would typically try to have no more than 3-4 sponsors at a time, and total over a year, perhaps 6 or so. Some sponsors would sponsor for 3 meetings, some for the entire year. There were discounts for an annual sponsor as opposed to a quarterly sponsor. If you were a quarterly or greater sponsor, besides having your logo in emails and being mentioned from time to time, you were given the opportunity once a quarter or so to give a 5 minute pitch before the group. Some took advantage of that, some didn’t. But I have to say those who did, I think made a better impact when they could introduce themselves and point to the food and say they were glad to sponsor our group.
I’ll close with one final comment on sponsors: not all need to provide a direct financial contribution. We have a local hotel that has provided us 1-2 free room nights a year. We typically use one to put up a speaker who is coming in from out of town, and the second as part of our annual holiday raffle. We also had the local garbage collection company provide a free year’s service as a prize for our annual raffle. That was surprisingly one of our more popular prizes. In SQL Server you don’t have to worry about garbage collection and for a year neither did one of our DBAs!
In Conclusion
I can’t speak for other user groups, but I do know we’re probably very close to going back to in-person meetings in the near future so I’ll be dusting off the playbook and doing the above as well as other things in order to build up our successful in-person attendance again.
I look forward to seeing what other group leaders advise!
For most people, today stands out in two ways: the one that happens every year is the anniversary of Washington’s Birthday. The other is fairly unique to this year, it of course being the date of 2/22/22 on a Twosday… err Tuesday. And of course at 2:22 AM (when most of us are asleep) or 2:22 PM for those who us who are awake. I won’t be doing anything special at that particular time, other than taking notes for class.
But for me, February 22nd has always had a different meaning in my heart, and this year even more so. My father was born 75 years ago today. He always got a kick out of sharing his birthday with the Father of our Nation, but for me, it was always more important to share it with the Father of me.
It’s been just under six and a half years since he left my life. But that’s not entirely accurate. While his voice has faded in my head and he’s no longer a physical presence in my life, he’s still there. More than once I’ll say something to my kids like “Oh your grandfather would….”. They were fortunate enough to be old enough to know him when he died, but of course I have far more memories of him than they ever will. Part of the reason I say such things to them is that it helps to keep his memories alive one more generation. I think that’s a worthy goal. And one I think he’d support.
He was an English major in college, so of course became a builder to pay the bills, and later in life an architect. He understood the power and the value of “the story” no matter what the story might be about. While we didn’t agree on genres, we agreed on that much. He was never much of a fan of Star Trek for example, but even years ago when the only Star Trek was the original series, he respected the stories it told and the archetypes it often drew upon, such as its reliance on Greek mythology and Shakespeare. So, I think it would tickle him pink to know he’s become a part of oral history, if nothing more.
A few weeks ago, I wondered to myself, “I wonder if my dad would be proud of what I’m doing (going back to school).” I immediately corrected myself and said “I know he would be.” Back when I first went to college, he decided he couldn’t be a builder his entirely life, his body just wouldn’t handle it, so he decided to become an architect. I’m still not entirely sure how he talked his way into Columbia, but he did. So for awhile we were both in college at the same time, me getting my Bachelor’s, him getting his Master’s. And to show that the apple doesn’t fall far from the tree, his mother, Chestene, at the same time decided to take some classes at her local community college in New Haven.
And in sort of an echo to the past, I find myself in college at the same time as my daughter. So history repeats itself.
I started by mentioning he would have been 75 today had he not succumbed to C. Difficile Colitis in 2015. It of course saddens me to know he’s not here. I won’t hear his voice again. I can’t ask him for advice on something. I can’t even argue with him over some trivial point where neither of our stubbornness will allow us to concede. He was part of my life for decades and I had hoped he’d be there for decades more. He was simultaneously one of the wisest and most compassionate man I knew, and also the most stubborn. He was a giant to me, both figuratively and at 6′ 4″ literally. And yet my memory of him, laying their in his hospital bed, he’s so small.
As I like to say, he wasn’t just my father. Biologically that’s the easy part. He was my dad. And at that, while sometimes he stumbled, he always would strive to do better. And this humble jumbled attempt doesn’t do him the service he deserves in recognizing him. But, I have now, included made you part of his story. And though not here, and he’d never admit it, I think he’d appreciate that.
As I’ve previously talked about, I’m enjoying taking classes as I prepare to apply to Physician’s Assistant School. I’m a month in and still loving it.
As a toddler I apparently had a habit of turning on and off light switches. As a toddler, I have a vague memory of going with my parents to visit a friends apartment (which means it was probably in New Haven) and turning on and off a switch, not immediately sure what it did. I’m not sure it turned on the light in a closet or in the room at the end of the hall, but it wasn’t immediately obvious to my 2-3 year old mind what it did. But I was committed to flipping it until I found out.
I’ve always had a curiosity about how things worked. For some, simply knowing “it works” or “this is how I do something” is good enough. And to be honest, I often apply that in my own life. But, I have a strong bias that understanding the fundamentals goes a long ways to improving ones ability to do their job. In the world of SQL Server for example, I know many programmers who know enough to write a select statement, but have no clue how that’s executed under the covers in SQL Server. And for them, that’s fine. But as a DBA I’ve always wanted to know more. It’s a reason why I’ve read books such as The Database Relational Model by CJ Date and others. I want to understand better how things work.
And so, I’m loving my current classes, especially Anatomy and Physiology I. We’re still in the introductory phase, but starting to dive deeper. Yesterday afternoon’s class for example we started to dive into things like Carrier Mediated Transport channels and chemically gated ion channels and more.
Did you know that the inner well of the plasma membrane of a cell is typically at a -70mV potential compared to the outside, and this is due mainly to the cells ability, nay, requirement to transport Na+ ions outside to the extracellular medium? Well now you do.
“But why would one care?” you might ask. Well, from this we get to the point where in certain cells, by properly manipulating this potential we can cause cells to contract and then un-contract (I hesitate to use the word expand here). And by doing that, when we have large groups of specialized cells, we have muscle fiber and with muscle fibers we can build muscles, such as the heart.
And this all starts with a miniscule voltage difference between the inside and outside of a cell.
Honestly, the more I learn about just the basics of how a typical cell works and the amount of chemical activity in it and across its plasma membrane, the more I sit back and just say “Wow, that’s just so incredibly cool.”
So yeah, I’m over a month in now and still loving it.
Today’s another T-SQL Tuesday, thanks to Steve Jones. This month he’s asked us to talk about SQL upgrades.
I thought I’d write about a SQL Upgrade that wasn’t.
As a DBA I’ve worked with SQL Server since 4.21a. Yes. I’m that old. And a common experience I’ve had, which I suspect I share with many DBAs, is that every company I’ve worked with, either as an employee, or as a consultant has been reluctant to upgrade.
And often it’s understandable. Depending on their licensing situation and finances, an upgrade can be costly, especially for a smaller company. So companies often soldier on with older versions. In fact, just the other day on Twitter, I saw a post from someone asking about tuning queries on SQL 2020. In any event, especially as a consultant, I’m not alone in seeing resistance to upgrades.
But one client really stands out. I started working with them about a decade ago. They were running SQL 2005. Now, if you do the math, you’ll realize that by this time SQL Server 2008 and SQL 2012 had come out.
Technically I was brought in for a separate project, but when they became aware of my skills, they asked me to help tune their current database. There were some easy lifts (such as removing a duplicate index on a particular table that did nothing to help select performance, but obviously hurt insert performance). But by far one of their worst performing procedures was one that was handed an XML string which it then had to parse. I made several recommendations but realized that as long as they were depending on this stored procedure to parse the XML and were using SQL 2005, this would be a huge bottleneck. There was a pretty common and known issue with the way that SQL 2005 parsed XML.
The simple and obvious upgrade was to upgrade, ideally to SQL 2012. The answer was a firm “no”. It wasn’t even the cost, it was fear. It seems they, like many folks who had done the upgrade from SQL 2000 to SQL 2005 had hit several performance issues due to changes in the query optimizer and were afraid that they’d have as bad or worse issues upgrading to SQL 2008 or SQL 2012. They were far more comfortable with the devil they knew than the devil they didn’t.
Now, I can fully appreciate this, but it was frustrating. It was more frustrating because their business was fairly seasonal in nature, which meant that they could have done the upgrade soon after their busy season and had 8-9 months to debug performance issues. They would have also gained other benefits from the upgrade.
I’d love to say I finally had shown them enough proof of the advantages, had shown them how low the risk would be, and how to mitigate such risks. Alas, I didn’t. They decided (and to be fair there were other reasons completely unrelated to their SQL Server concerns) to migrate to a full LAMP stack. SQL Server was out, MySQL was in. Of course they had other issues there, but those weren’t my problem.
Upgrading SQL Server Today
I knew then, and still know now, that the upgrade would have been far less of an issue than they feared. But, I couldn’t and still can’t completely dismiss their fears. They were far from the only company that had been somewhat burned by the SQL 2000 to 20005 upgrades. I’ve heard of other companies that resisted upgrades during that era for similar reasons .I still sometimes hear echoes of such fears. And let’s be honest, often a database server is absolutely essential to the core of a company. Unlike front end code that might be easily rolled back, often SQL upgrades are very hard to roll back. (In reality it’s not as bad as some think, but it’s often non-trivial also.)
I will give Microsoft credit for listening. Since then, I know they’ve taken a lot of steps to mitigate such fears and have made backwards functionality a far higher priority than they used to. Other than licensing costs, honestly, at this point, I think companies should be on a regular update cycle. There’s almost always performance benefits and these days, the drawbacks are pretty minimal. And honestly, if you’re on Azure, you’re being upgraded without knowing it.