Category Archives: SQL Training

Fundamentals Matter

I am currently interviewing candidates for a new Junior DBA at my company.  Even though the position for which I am hiring is a junior position, I do expect the candidates to have a base level of technology, know the basics of server administration, and have some strong critical thinking skills.  So, to test the way each potential employee thinks, I ask a lot of intermediate to sometimes advanced SQL questions.  My thinking is that, 1) I want to know what level the candidate is really at, and 2) I want to discover how they respond to questions they haven’t faced before.  Have they dug down deep into the material, trying to learn as much as they could?  Have they been casual observers of technology?  Have they tried to test out ideas they’ve heard?  I certainly don’t consider my questions pass/fail, they are just an indication of where the person sitting across from me is in their technical career.

I have had several candidates in so far and a few of them have come to me via a recruiter.  After I had wrapped up with the recruiter regarding some of the candidates, I had mentioned to him that some of them, while completely qualified for this position, may want to stretch themselves a bit, because I see a lot of potential there.  He asked if i could clarify, so I started trying to put it into a concise idea.  I realized that the core of what I was trying to get across was simple, people who are starting into their technical career need to learn how to think about technology, not just learn the syntax and the base skills.  So, I came up with these suggestions, mostly specific to SQL Server, that I thought would get the gears turning about how to start digging.  These are not an end unto themselves, but simple stepping stones into building a technology paradigm; in this case, using the vehicle of SQL Server.

  1. Dig into how the syntax works.  Start by opening up SSMS and going through the different wizards.  Select different options and parameters, and then click the “Script” button at the top of the dialog to produce a script that you can read through.  Start working through it and find which parts of the syntax are new to you.  If you find a parameter you are not familiar with, or if you come across an entire group of keywords you have never used before, start researching them.  Find out what the code is actually doing.  Books Online is a great resource to start reading up on the syntax, but then expand your research and test it out for yourself.  Books Online DOES have errors in it, as do hundreds of blogs, forums, and twitter-feeds.  All of this information is coming from some human, double-check their work.
  2. Learn the first layer of Internals.  Read up on how the Transaction Log functions and the role it plays in the database.  Learn what VLFs are and how they work within the Transaction Log.  Learn the process data goes through when queried, updated, and deleted.  There is a lot going on here and understanding the basic principles will help you immensely.
  3. Start building a paradigm.  I like to think that there is no technology that we posses today that was not built up through a quasi-logical process, placing one building block on another along the way.  This enables me to build a paradigm that I can start plugging new information into.  The more robust and thorough my model is, the better I can assimilate new ideas.  If I come across something that doesn’t fit, I either have to recognize the failing in my paradigm and adjust my model to be more correct, or I have to find out why that new information is wrong.  Those are the only two options I see, either I don’t understand something as well as I need to, or the new information is not completely accurate.  It is up to me to find out which is true.  Your brain may not work the exact same way that mine does, but having some type of model in your head of how different systems interact, helps you predict functionality and troubleshoot anomalies.
  4. Start to recognize false information.  A lot of ideas get passed around the SQL community, and some of them are just straight-out wrong.  There are some DBAs who believe everything they read or hear, this leads to a lot of myths being shoveled back and forth that are not true, or are not true in all cases.  Knowing this information, or at least being familiar with it, will give you a leg-up.  Start with Paul Randal’s “Common SQL Server Myths” document.  This is a great summary of some of the information out there that is just plain wrong, and it will give you some good tools to start watching out for bad information that doesn’t fit into your paradigm.

Applying this type of thought to different areas of technology can help you start to think critically and proactively about the technologies that interest you most.  So, when I speak of fundamentals, I am not talking about features and syntax, I am speaking of the fundamentals of being a technologist.  This is a reminder that I myself need to come back to again and again, and I hope it can help someone else as well.

SQLskills Immersion Event 3 Wrap-Up

I am back home after my 3rd SQLskills Immersion Event. This has been a very full week of deep learning,  hundreds of questions, some fun networking, and intelligent (and sometimes sophomoric) discussions ranging from deep dives on SQL Engine internals to “the answer to life, the universe, and everything”.

If you have never attended a SQLskills Immersion Event and you are serious about SQL Server, let me please encourage you to sign up and attend, starting with IE1 (internals and performance). While there is no requirement to take the classes in order, I can attest to the value of doing so. Paul (Blog | Twitter) and Kimberly (Blog | Twitter) lay a very strong framework for everything else in that first week and then they, along with Jonathan (Blog | Twitter) and Joe (Blog | Twitter), build on that framework for the next two classes. On at least 20 different occasions, someone who had skipped the first class would ask a question or be confused on a point that had been explained in detail at the previous event. I understand that the names of IE2 or IE3 may sound more appealing to you, because of something you are facing in your current job, but some of the lessons in these classes are at the 400/500 level, you will benefit from having that deep understanding before progressing.

There were several highlights from this week that I would like to share. Restore strategies, including Kimberly’s USB drive Partial Database Availability and Online Piece-Meal Restore (she goes into more depth in the class than she did at her PASS Summit session). Paul went through a ton of corruption situations and the most productive steps to take to wade through the process of digging out of them, each and every one of them starting with, “Do Not Panic”. Jonathan showed us some great tips and lessons learned regarding Clustering Strategies (my favorite quote from that module: “I carry at least 5 separate clusters with me on my laptop at all times”, what a bragger! :) ). And Joe, SQLskills’ latest addition, did a fantastic job representing the internals of replication and mirroring. There was a lot more, but it would be unreasonable to try to list it all here, just go check them out for yourself.

After these three weeks I feel like I understand what I do on a daily basis even better and have garnered great tips to make my environment more robust and prepare me for new challenges as they arise.
In addition to all of the great learning, I also had a great time hanging out with the SQLskills group (if you don’t know them, they are genuinely awesome people). I also met a lot of great people from the class. Almost all of the attendees are folks who are deeply interested in SQL top-to-bottom, but also have a wide range of other interests, and love to chat about everything from the LHC at CERN to TopGear. I got to know several of them quite well and they were a lot of fun to chat with and bounce ideas off of.

To wrap up, I would highly recommend the Immersion classes. Don’t worry about your skill-set going into IE1, if you are eager to learn, can focus on the classes, and work on applying the knowledge both at work and in the many labs they give you to work through, you will be able to follow everything they are talking about and drastically round out your SQL knowledge.

The Day Before SQLskills Immersion Event 3 – High Availability and Disaster Recovery

Tomorrow starts my third SQLskills Immersion Event.  I took the first two in Chicago (May & Oct 2011), and they were both phenomenal!  They are led by my friends, Paul Randal (Blog | Twitter), Kimberly Tripp (Blog | Twitter), Jonathan Kehayias (Blog | Twitter), and Joe Sack (Blog | Twitter).  So, we have all gathered here in Tampa, FL to improve our knowledge.

Each class has been chocked full of great knowledge with tons of very deep dives and little-known facts.  I am expecting IE3 to be no different.  HA and DR are a huge part of my job and I am always trying to improve on these aspects of my databases.  I am hoping to walk away from this class with new tips, tricks, and ideas to not only improve my current environment, but grow my understanding of SQL and improve my “craft” in general.  One thing is certain:  if you are at a SQLskills Immersion Event, you are serious about deepening your knowledge of SQL.

One extra-curricular note about SQLskills Immersion Events: when they say “Immersion” they mean it!  You have the option to spend a lot of time with your fellow students as well as the teachers.  I love connecting with others in the community, visiting with those I’ve met before, and meeting new people as well.   It is very refreshing to spend time with others who not only love SQL, but also love talking about a wide range of other topics; sometimes we even get into a little philosophy.  :-D

I plan to post an update later in the week or at the end of the event.  Until then, I’ll be fully “immersed” in SQL knowledge!