Today, I’m not thankful that it’s Friday, although I am happy about it. Today I am thankful for the wisdom of Grant Fritchey ( b/t ). No Grant didn’t help me with any kind of problem, at least directly. Hell, I have never even met the man in person anyway. No, I’m not some kind of weirdo interwebs creeper either. I do, however, follow Grant’s blog and occasional twitter posts. What can I say, he’s a pretty sharp crayon when it comes to SQL, and as a DBA I like and listen to, sharp crayons. Although today I’m not thankful for Grant’s technical wisdom. Today I am thankful for his wisdom related to making the relationships between the DBAs, devs, IT, and business folks better.
As you know, COVID-19 has upended well…everything. This means, that at my company priorities have been upended as well. So with fast responses to technical and business problems, IT hasn’t had to polish things out and make them experiences seamless. This week, I forgot about that and started letting my ego and my own self-importance get the better of me. I was focused on the problems related to databases and the SQL instances I work with, I forgot about the bigger IT picture. During a SCRUM call, I was a little too honest about my frustration related to connecting to instances in the cloud and how unintuitive access currently is, along with the inability to use our toolsets. It was pointed out to me later, that my frustration was a little too apparent and could have been seen as hostile towards the IT folks on the call.
So today, I used some wisdom from both Jocko and Grant, I chose to own it. I decided it was better to apologize for my ego whether it was misconstrued or not and make sure to foster a better relationship between IT and the Data Team. So instead of dismissing it as just as a misunderstanding in a moment, I opted to take 20 minutes to send an apology accepting all of the blame. I’m not posting this as a humble brag about my moment of empathy either, I am posting this to both remind myself I will be better publicly and to reinforce the lesson. The bottom line, it is better to remain humble and approachable than to fracture getting work done because of some unmet, implied expectation that neither side had agreed to.
I don’t know why I am slow to take up new tools, but I am. I recently, like back in December, began working with DBATools. In case you’re not familiar, DBATools is a PowerShell module assembled by the community over at DBATools.io. This module, oh this wonderful module, makes some of the most aggravating parts of a DBA’s job so much easier. Things like server migrations, copying users, adding Ola’s jobs, and a slew of other things so much simpler.
What sold me? Well in December I had to migrate 70 some small databases off to a new SQL AG. I knew I was going to have to script out the backups so I decided this was a good as a time as any to learn Powershell and solve a problem. That thought process got me thinking about DBATools, and I decided to see if the module could help me out. Oh, and help me out it did. This module is a tool EVERY DBA should be using.
I went about setting up the list of databases into a Powershell list, created a specific UNC file location for the backups to land on, and ran the following the code:
Where $server was the name of the server I was backing up from, $dblist was the list of databases I needed, $path was the UNC location. The -CopyOnly switch, made sure I didn’t affect the backup chain on the server I was migrating from. Although, this was less of a concern post-migration.
The really cool part about this, or at least I thought it was cool, was the restore command.
The restore command allowed me to point the restore command to the path, and it restored each database in the directory to the default file locations. Pure genius.
Other areas of the toolset I used were copy users, migrate settings, migrate jobs, and copy linked servers to name a few. Oh, this tool saved me so much work and time. I’m not sure why I did not embrace it earlier.
This month, Aaron Bertrand (b/t) is hosting the TSQL Tuesday topic. And this month, the topic of choice is either 1) an outside hobby or 2) bad habits found/used in TSQL. I somehow think by the time I’m done with this post, I’m going to blur the two together.
I have a number of interests outside of my career, and all of them involve being outside. I love nature. I enjoy hiking, skiing, backpacking, fishing, hunting, shooting, and just being in the woods. In fact, I love it so much I recently took a DBA job in Duluth just so we could live in the woods.
While all of those are great hobbies and awesome things to do, the hobby I am most passionate about is motorcycles. It’s something I have done since I was a kid puttering around on a hand me down 1972 indian 100cc dirt bike. I swear, I spent more time working on it with my Dad vs riding it. After having a couple of dirtbikes, I moved to the street at 19. In fact, that’s the only mode of transportation I had for awhile.
Then with a wife and a couple of kids, I had to sell the bikes and take a break because the needs of the family came first. A divorce and marriage 2.0 later, I was back to riding. Only this time I wanted to learn how to ride a sportbike. Oh how I loved going fast (at the track of course). I spent a lot of time learning how to ride that style. You’d be surprised what you have to learn to get your knee on the ground: geometry, physics, motorcycle mechanics, body positioning, and the list keeps going.
For instance. Every corner has a natural apex and an engineered apex. Motorcycles actually counter steer, meaning when you are leaned over in a corner the forks are pulled toward the rider making the front wheel steer towards the opposite direction of the turn.
That’s not to say it’s a safe hobby. You get hurt. There’s an old motorcycle proverb. There’s only two kinds of riders, those who have been down and those who are going down. You’re always one or the other. So on a sunny morning in July of 2010, at approx 100 mph, I went down hard on the back straight of Topeka raceway. I high sided and looked at lot like this guy.
It was the last time I would I be on a race track riding a sportbike at a track day. Why? When I added up what those 22 minutes of fun cost me, it was hard to justify continuing trying to get faster.
So I moved over to riding SuperMotards. Think, dirt bike with street tires on a go-cart track. Oh man, you can have a lot of fun. But alas, when I started applying racing techniques and crazy supermotard skills to everyday street riding, well let’s just say I had some great skills and I was applying them on public roads in traffic. I wasn’t a full blown holligan, but I was flirting with it.
So with that in mind, I decided to go back to riding in the dirt. Only this time, it’s been riding in single track, or what is known as hard enduro. It’s riding your dirt bike in the woods, over rocks, over trees, through streams, over hills, etc. Sometimes, you fall. Sometimes you run out of gas. Sometimes you get lost. Sometimes, all of it happens at once.
So I made a choice. Continue to ride on the street; risk tickets, jail, getting hurt, or getting myself killed or retire from street riding. I’ve lost enough friends to bad (and often stupid) traffic accidents. I’m sure by now, everyone has seen the gruesome picture of the sportbike rider who rear ended the semi head first. Well, his name was Brandon, he was from Broken Arrow (a suburb of Tulsa), he was going to college, had plans to ask his gf to marry him, and we rode together occasionally. He was a good kid who made a bad decision. Choices defines us. Bad choices don’t make people bad….they just make us people.
And do you know what this has to do with SQL?
Everything. I’ve evolved as motorcyclist. I’ve learned to go fast. I’ve learned to go slow. I’ve learned to be methodical in my technique. I’ve learned to be patient. You see, to go fast on a motorcycle, you have to learn how to do it going slow. To ride technical tracks, you have to be patient and develop your technical skills. You have to practice often, and be humble. It doesn’t happen overnight. I will never be as good as a rider as Johnny Walker, Graham Jarvis, Valentino Rossi, or the late Nicky Hayden. I will never be the SQL professional like Brent Ozar, Thomas LaRock, Jess Borland, or Paul Randal either.
And that’s ok. Why? Because I’m me. In riding, there’s another famous saying. Ride your own ride. Meaning, you’re the only one in control of the bike. You can only ride to your abilities. No one else is there to make you do anything. Sure circumstances happen like a deer on the road, deep mud hole on the trail, and piss poor judgement like Brandon. He was riding with a group late at night, on US 169 which is a ghost stretch at that time of night. He let others influence his riding and he forgot to respect the danger. He forgot to ride his own ride.
As a DBA, I’ve had to learn to evolve as well. I’ve had to remind myself to ride my own ride. I look up to a number of people in the SQL community, just like I look up to a number of riders. But you have to remember, their path isn’t YOUR path.
The other thing SQL has in common with motorcyclists? They love what they do. The SQL community is just like the riding community. A couple of strangers on motorcycles stop at the same gas station, they are talking about bikes. Just like you talk about SQL at SQL Saturdays, UG sessions, twitter, slack, etc. It’s so damn awesome. And each SQL pros journey is similar, but deeply personally. And if you’re doing it right, even spiritual.
I leave you with some riding wisdom that can be applied to SQL
That’s all the motorcycle is, a system of concepts worked out in steel. ~Robert M. Pirsig, Zen and the Art of Motorcycle Maintenance
Most motorcycle problems are caused by the nut that connects the handlebars to the saddle. ~Author Unknown
Keep your bike in good repair: motorcycle boots are not comfortable for walking. ~Author Unknown
I’m a bad DBA, at least from the standpoint of blogging. Only because I haven’t done much of a lately. I did make sure to get a post in for TSQL2sDay to mention who I was thankful for. That was a great topic. So…if you’re wondering why I haven’t blogged, or have checked to see how I like the new job…here is that post.
At the end of September, I was presented with an opportunity to take a DBA position in Duluth, MN. Given that my wife and I already had a house in the area, we decided it was great opportunity for her and I to get out of the city. So I tendered my resignation to the hospital in Denver, and started my new gig in Duluth October 23rd. Just moving out to the country has been quite the welcomed change for me.
The new job has me working in Downtown Duluth, on the hill. Which is awesome, unless you have to hike up the hill to your parked car. In fact, that’s my one complaint about the new job, is parking in Duluth is atrocious but that is neither here nor there.
I have been busy learning a new environment, understanding the business processes, and wrapping my mind around the differences between being a production DBA in a hospital and more of a development DBA here. There are some fundamental differences that I am finding out that require me to think and approach the job differently. Which is a good thing, I am getting to learn new things. As well as discover some new things.
I was tasked with getting some large databases to work in a container. Which, having only read about and vaguely paying with containers was an awesome change. It took a few days, but I got it done. Learned quite a bit about containers, as well as starting to learn how to approach containers from a DBA standpoint. For instance, restoring large databases in containers is not your friend. At least, not yet.
I would also like to thank Andrew Pruski (b/t) for his awesome articles on SQL and containers. His posts definitely helped me to get SQL going on both Windows and Linux containers.
Other than containers
I have also spent a bit of time getting familiar (and getting my ass kicked) with SSIS. Talk about a shift in responsibilities. Prior to coming here, I never had to do anything with SSIS. It’s both fun and extremely frustrating to work with SSIS. Thank god I dusted off my Pluralsight and Safari subs.
Anyway, I will be better about posting after the first of the year. Right now, I’m still working on getting the house here for the move which has been consuming my time. Then I fly back to Denver to help the wife to get everything ready for the movers, as well as help her drive up. And there’s the holidays. So ya, it’s been a bit busy.
I think I’m actually going to make this TSQL Tuesday, it’s the first for me in a while. I kind of have a valid excuse, I left my job at the hospital in Denver and took a job in Duluth, MN. So currently I’m in the middle of a cross country move, and if you’re ever done one….you know the fun I’m having. Oh ya, and there’s the new job and the learning that goes with it which I’ll hopefully get a post about soon. In the meantime though, I am going to mention a few of the people who have made a difference to me personally. This month’s TSQL Tuesday is hosted by Ewald Cress (b/t).
In the spirit of giving thanks, I’d like to a moment to take a moment to thank all of those in community that I have helped me learn by supplying great information. While I don’t personally know these folks, I am grateful everyday I get to learn from them. By no means is it an exhaustive list… just the blogs and twitter feeds that have been most prominent for me lately.
Jen and Sean McCowan
Carlos L Chacon
All the Pass Virtual Chapter Leaders
One of the things all of these people have in common, is that have inspired me to be a better DBA. In fact, some of them have inspired me to be a better a developer (ok, just be a developer). The point is, for me personally, these are some of my professional mentors. I follow their blogs, webcasts, or in some cases both. They all of freely given their time and energy to bettering the SQL community. Everyone of them is an inspiration of what makes the SQL community so special. So to all of you, I say Thank you. Your contributions are truly appreciate and are invaluable for the rest of us.
I’d also like to take a moment to thank my former coworkers. I learned so much from Michael and Toni in such a short time. You two will always be on the list of best DBAs I have worked with.
I admit, I slid a touch on my weekly blogging goal. In my defense however, work has been focused on a relocating a data center which hasn’t gone quite as planned. So there has a been a couple of late nights. I’ve also been extremely busy working on training goals. Which has been tough in itself. Trying to improve SQL skills, looking at DevOps, trying to find time to brush up on C# and Python….that’s a bit overwhelming in itself, and a separate post all it’s own.
One of my personal and professional goals is to always be learning. Professionally, that means learning more about SQL and development. Both of which are very broad, and very deep, topics. Of late, my topic of interest in SQL has been indexes, performance tuning, and getting better at writing SQL. On the development side I’m still focusing on SQL, but I also want to get better at Python and C#…two subjects I haven’t really touched since completing school. Oh then there is my current obsession with DevOps.
How to do the learning
So how do I learn? Well there’s my Safari sub, then my sub to Brent Ozar training, plus all of those blogs in my RSS feed as well as the podcasts feed to name a few. I have to admit, there are times it feels over whelming. Then there’s the attempt at following Twitter and Stack Exchange, which I don’t do a very good job of. It seems I need to find a better system or take on less. Oh and then there is all the free training from the SQL community to keep up with. SQL Saturdays, monthly PASS chapters, and Brent Ozar’s Groupby.org.
I think what I need to do is come up with a system so I don’t start suffering from burn out. I have had to remind myself that I don’t have to learn everything at once, but find it hard sometimes not squirrel down a rabbit hole.
So if you have suggestions or a system in place that you wouldn’t mind sharing….I’d be all ears. In the mean time though, I think I’m going to have to work out a schedule and system. Maybe par down all the incoming information a bit.
I’m not sure how I ended up on the Dallas DBAs website, but I came across their blog topic How I became a: ________ . The idea of posting up my story resonated with me, so I thought I would share. I apologize for the length in advanced, but it’s hard to lay out a career path that spans almost 20 years in a few sentences.
In my beginning
In my 20s I was working at a Denver trucking company delivering air freight on the Front Range. There were a couple of guys I worked with who were into computer gaming. I forget how it got started exactly, but I ended up hauling over a crappy hand me down computer to one of their houses to play either Half Life, Star Craft, or Duke Nukem. I got so pissed off at the crappy performance of my computer that I decided to get a new one. Only, back then it was much cheaper to build your own. So that’s what i did and that’s what got me interested in computers.
So I worked at it, passed my A+, and landed a job at Mom and Pop computer repair place after my first wife and I moved to Texas. Talk about an education in baptism by fire. Everything was done on a shoestring budget and there were times where I just had to figure it out. For instance, we had a contract to maintenance IBM dot matrix printers (the ones that used blue/green bar paper). I got sent out to a place in Abilene that had a printer running off of SCO Unix, which was a first for me. I remember spending about an hour google’ing how to update the drivers before I got it finished. Although my boss at the time wasn’t impressed, I apparently took too long.
I say dumb things
After that, I moved into Systems Administration when I came back to Denver. I ended up working for an Oracle Consulting company for almost 4 years. Working quite a bit with the DBAs, I remember giving one them some static about never wanting to learn programming nor wanting to be a DBA because I thought being a generalist SysAdmin was the top of the IT hierarchy. It’s true, you don’t know what you don’t know. So Brad or Dave, if you ever stumble across this post…know that I am still eating crow. And sometimes I wish I taken the opportunity to learn Oracle from these guys. They are two of the sharpest people I know in IT.
I stepped away from Microsoft
While I was at the Oracle Consulting company, I occasionally got to mess around with our UNIX systems. One of the truly great aspects about that job, and my boss, was I was always allowed to learn something new. So when I moved to Tulsa in 2004, I jumped at the opportunity to become a Linux Administrator. Yep, another steep learning curve. I got my first taste of supporting a large environment, including a small taste of working with database servers. I was working with Redhat Linux, Solaris, NSK Tandem machines, and MySQL. This also where I learned a little about shell programming, which sparked an interest in programming in general. However, the rotating shifts took a toll after 4 years so I ended up leaving to take a IT Director position.
Now don’t read into that. I was the IT Director of a 5 site school district in Central Oklahoma that was dirt poor. In fact, IT Director is completely misleading. I was the IT Department. Needless to say, I found out I was over my head, and there wasn’t much about that job I enjoyed, when I guy I rode with let me know about a position where he worked. So I threw my resume into the pile, and after a long interview process (which is a story in itself), I took an analyst position at another school district.
Oh I guess I should mention that during my time as a Linux Admin I had gone back to school. While I needed the bachelors to help with the job searches, I figured as long as I was there, taking the Software Engineering track was just natural. And as long as I had already earned a bachelors with a focus in Software Engineering, a Masters in Software Architecture only made sense. Right?
For 5 years at the second school district, and for 2 years at the bank….my life revolved around the AS/400. I helped install and configure a new one, wrote a batch program that ftp’ed our data to a hot spare weekly, learned about replication, how to hang a windows server off of one, and hell of lot other things. I even got pretty good at finding and solving issues using PubLive (as/400 equivalent of Google). There was even an interest in learning Cobol and RPG.
Now what didn’t occur to me until about a year into the Bank job (sounds ominous when I put like that) is I was already a DBA. At the school districts we were always querying to build reports, occasionally updating data, ensuring backups, maximizing uptime, etc. At the bank, not only was I responsible for the AS/400 but also all the databases and applications that connected to it. So I was working with SQL and DB2 LUW as well as DB2 on the 400 itself. I have no idea why it took me so long to realize that, but for 7 years I was a DBA.
Back to Microsoft
Prior to getting laid off from the Bank, I had already started concentrating on SQL Server. I was attending meetings at the Tulsa Pass User Group pretty regularly. I have to admit, I came across that group when I attended the Tulsa .NET user group. I discovered in my undergrad and grad courses, the Microsoft tools and languages came a little more natural to me. It was much easier to work with the .NET framework than to have constantly deal with what seemed like dozens of frame works for Java.
For the past 2.5 years, I have been happily working as a SQL DBA at Denver area hospital. I can honestly say I am very happy with my career and career progression. I took an orthodox path to being a SQL DBA, but every step has prepared me for it. Even my Linux experience and interest in Python seems to be working out in SQL career. And blurring the lines between DBA and database developer isn’t that uncommon. Which means I get to learn and work with all the areas I enjoy about SQL.
I can say sticking my foot in my mouth about my reluctance to learn programming or becoming a DBA has ended up with me learning and doing just that. So Morphous was right, “Fate is not without a sense of Irony”.