Up a Creek…

Actually more like an upstream problem. Or two.

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…

Unlocking the Secrets of the Universe, or at least Databases and Muscles

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!

This Week In School

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.

… Other Duties as Assigned #2 in a series

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.

SQLBits – My Thoughts

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.

A Birthday

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.

A Month In

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.

Time Management

One of the side effects, happy I tend to think, of taking my prereqs for PA school is that it’s forced me to better about my time management.

I’ve often said that one of the advantages of consulting is I can set my own hours. And there’s truth to that. But there’s a flip side. Sometimes it can be hard to get started on projects or to even get motivated. With projects sometimes I feel guilty if I’m setting aside time for them and not hustling for more work. Or, motivation is low because well, sometimes it’s tough to get motivated when the highlight of your day is “Can you add this user to the database?”

But now, I have approximately 12 hours of the week I absolutely have to block out. I can’t make excuses to myself of “oh, I can do that later” or “Oh, I should be trying to drum up more work” etc. I have to be in a room or lab, focusing on a particular topic.

But more so, on top of that, I have to block out time pretty much every night and so far one day of the weekend, to go over notes, study the past week, prepare for the next and work on study aids. So this has forced me to get better about time management. Fortunately I’m not in the stage where it’s highly stressful. If anything I’m feeling a bit better. I feel like I’m accomplishing more. So, a side effect of my school work is I actually feel a little more charged because I feel like I’m using my time more effectively.

And part of that, is making sure I get this blog out in time to take care of the rest of my day.

Week 1 Update

Because last Monday was Martin Luther King Jr Day, my classes didn’t start until Tuesday. So technically I finished my first week yesterday and I’m starting my second week today.

And wow, I have to say, so far, I’m loving it. But there’s more to it than just that.

I’ve had a few friends close in age say, “Wow, I could never do what you’re doing!” Or, “Wow, I’m done with school. How are you doing it?”

For all of them, I understand. For one, everyone is different. Some didn’t have a great experience in school. Some are too busy. Some just don’t have the interest. I get it. But for me, wow, it’s been a great and heady experience and parts of me wish I had done this years ago. Of course I have to temper that with “it’s your first week Greg, give it a few more weeks.”

It is definitely a strange experience being the oldest students in the class. The only reason I say oldest student and not oldest person is because the four professors I have area all close in age to me or older. I’m only taking three classes, but my Bio I lab professor is not the same as the Bio I lecturer, hence having 4 total.

Bio I – so far, all review for me. Basic chemistry and some basic definitions. The professor has made a good point that we all have to start someplace and I agree.

Bio I Lab – basic safety and use of the micropipette and spectrophotometer. Good stuff. But not the most exciting. I do hope it gets better.

Psychology 100 – Strangely the class I felt oldest in for a minute when he was talking about the theory of playing classical music in utero and if the idea it might have an impact on fetal and baby intelligence. It was just a brief comment, but I had to remind myself, I was alive when this was all the rage back in 1998, including the governor of Georgia wanting to send CDs with classical music to all pregnant mothers. Meanwhile, the other students in the class, if they had heard of it, it was either as history, or because they heard the music itself!

Anatomy & Physiology 1 – The professor was out due to Covid for our first two classes and lab unfortunately, so we did stuff via Zoom. I can already tell I think this is the class I’m going to have the most fun in. It’s also probably going to include some of the most amount of rote memorization. So flash card time! I’ve already warned Randi on longer road trips I may have her ask me questions while we’re driving.

Besides enjoying the classes, I think I’m prepared to be a better student than I was 30 plus years ago. There’s a number reasons. For one, I’ve simply just accumulated a lot of general knowledge over that time between a lot of reading and then the learning and teaching I’ve done for NCRC and other programs. So for example, I’m already ahead on some of the terminology in A&P.

But it’s more than that. I’m simply a bit more focused, though that will be something I’ll have to keep an eye in, including keeping the balance with consulting in place.

But also, the technology obviously is different, and this has honestly helped me. Being able to communicate with the instructors via email (and Zoom) works well for my style. And the other thing I’m taking advantage of is my Rocketbook and OneNote to better take notes and organize things.

I have yet to really meet any of my classmates or learn their names and this being a community college and all of us are on different tracks, I suspect I won’t get too close to any of them. If/when I get into PA School though I suspect that part will change, in part because we’ll all be focused on the same thing and because having study partners will be an absolute requirement.

So, it’s only been week one, but I’m really enjoying it and looking forward to the rest of the semester.

In the meantime, an update on the Lego Saturn V I received for Christmas:

Lego Saturn V - S-IC stage sitting on a dining room table.
n

The Dream

The dream is always the same. … and I… find myself in a room full of kids taking their college boards. I’m over three hours late; I’ve got two minutes to take the whole test. I’ve… just made a terrible mistake. I’ll never get to college. My life is ruined. – Risky Business

Today is the day. For the first time in over 30 years I’ll be sitting down in a college classroom and taking a class. I distinctly recall taking my final exam for college. It was in Microbiology. I wasn’t overly concerned. I need to get something like a 40% on it to pass the class (and since it was counting as transfer credit, my actual letter grade didn’t matter as far as RPI was concerned.). It was multiple choice. Once I was confident I had gotten well over 40% I put down the pen and walked out. (For the record I ended up well over 80% on the exam.)

But I have to remind myself, that technically while that was the end of my undergrad career, I have taken classes since then. I took a class on SQL Server a few years later, I studied for and got my MCSE a few years after that, and starting in 2002, I started my career with the NCRC where I have since become an instructor.

But, this is different. For one, it’s 12 weeks of classes. There will be a lab. There will be homework. It’ll be harder in its own way than the other training.

Like many, for years after I graduated, I’d have a dream, usually around May, where it was exam time and I realized there was a class I had never attended and now had to take an exam in it. I’d always wake up a bit upset. One year though finally the dream changed. This time the setup was the same, but when I went to take the final exam, I aced it. Don’t ask me how. But I literally stopped having these exam dreams after that.

So I figure it’s appropriate that I had a dream about starting school last night. In my dream though, I was over in Schenectady (about 15 miles from the community college I’ll be taking classes at) trying to get folks to tell me what time it was, since I had to be at class at 2:00 PM. None would give me a straight answer at first until I got upset. Finally one person told me it was 1:45 PM. I was panicking because I knew there would be no way I’d make it to the Torrington CT Campus of UConn. It was then that I recalled that fortunately I didn’t have to drive that far.

All this is a setup to admit that yes, I am actually both excited and nervous. I’ve gone in a few short weeks from a feeling of ennui when it came to my career and life to one of stress and even a slight bit of panic. Of course it didn’t help that I had to get my vaccination status cleared, and then a bunch of other paperwork finished up late yesterday before it all became official.

I honestly have very little idea what my experiences over the next several years will be like. But I’m looking forward to them.

And more in the future.