SQL Server and Other Topics

I got my start with SQL Server in 1997 with SQL Server 6.5 at BellSouth Cellular. From that point on I've had the opportunity to work on Versions 6.0 to 2014.
I specialize in Performance Tuning, High Availability and SQL Development.
Contact me through this site or through my Twitter handle @SQLDiver

I'm Going to Be a Blue Badge!

I have really enjoyed being an independent consultant, even in the down times, because it gave me the freedom to help my wife with her business. Being independent means I have to go out and find work, which is more difficult than you would expect, which is why you have to have a great network. When I started my network was fairly small. After three years of speaking at SQL Saturdays and PASS Summit, my visibility, friendships and network have grown.

I believe this year as an independent would have been my best ever, but an opportunity knocked on my door that I had basically given up on.

For the past three years there has been one company that I've wanted to work for more than being an independent consultant. Yes, Microsoft. I've interviewed with Microsoft three times in the past three years. The first time another person with better BI skills was chosen, it was a a little depressing, but definitely understood. The second time the interviewers were the same as last time and all of them were very positive about my skills from the last go round. I expected to get this position due to their feedback until I found out it was the same day as a large amount of layoffs.

This time it came out of the blue from a friend at Microsoft that forwarded my info to the recruiting staff. A couple of days later a phone screen was scheduled. The phone screen was pretty simple (some of the questions were silly). The recruiter called me immediately after to schedule the technical interview. It happened within a couple of days and it was actually pretty tough... I had a brain fart when I was asked, name a couple of wait types... ahh... I know this.... I know lots of wait types... work with them daily... what is wrong with my brain!! I was so embarrassed that my brain wasn't working.

Immediately after the technical interview the recruiter called and said, when can you come to Reston, VA for a face to face interview? Schedule for Thursday of the next week. The travel coordinator waited until Wednesday (the day before) to get me confirmed on a flight. I was really sweating, not sure what was going on, but finally it came through (after my bedtime).

The day of the interview was pretty interesting. As an interviewee I had a little tiny office where the interviewers would come and interview me. I'm assuming there are multiple people interviewing for the same position in the office, since I've seen several people walk by.

After my first interview I thought I saw someone I knew to the point I started typing him an email when the second interviewer walked in. This was a pretty long technical interview, and no brain farts...thank goodness! The interview ended and this time I definitely recognized my buddy Ryan Adams walking by... I called out his name, "Ryan". We started talking and he asked me, "you're a BI guy, right"? Nope, I do the same things you do... we both said about the same time, "oh no, I'm not going to get the job because you are"! It was pretty funny but a little nerve racking.

Both of our next interviews were phone interviews with different people. While they were setting us up, I asked them, are me and Ryan interviewing for the same position? I was happy to hear, no we are not going for the same position.

The local coordinator of the interviews that day told us to give them 7 to 10 days for the recruiter to get back to us, we both were a little shocked about that as we were told we would hear that evening whether we go the position.

Ryan and I went to dinner that night and Ryan got a call form the recruiter. Recruiter says, we want to move forward, Ryan got up so he could go somewhere quieter to talk. Sure enough, he has a verbal offer. Yea! All dinner I'm thinking, where's my call. :-)

By this time I know I did well on the interview. But I'm still a little nervous I haven't received the call.

We decided to meet for breakfast the next morning before driving to the airport. Still no call by breakfast.

At the airport, Ryan and I were one gate away from each other so we hung out before his plane boarded (mine was boarding close to an hour later). No phone call yet.

With business as usual, I completed a phone "interview" with a potential client; just in case.

So we board the plane and I'm sitting in the exit row way back in the back of the plane. Everyone is on the plane, the door is shut and here comes the flight attended to make sure we know we're in an emergency row. Bzzzzzzz... yep there is my phone ringing and the phone number is from Redmond... not now... yes, now.

I of course answered the phone and the recruiter asks, you home yet? "Nope", I said, "on the plane, doors shut and everyone looking at me. How's it going? " He says, "Well, we want to move forward, how's..." the flight attended is being very cool as I mouth, "sorry!" She says, "we can't leave until you hang up the phone". "No problem", I said, "its a job offer". I told the recruiter I needed to hang-up the phone but I would be online as soon as we got to altitude. The negotiations started from cruising altitude.

Yep, I got the job!

Best news, Microsoft is still hiring for PFE and Consultants. Let me know if you're interested!

Related Posts

Move What? No downtime? What? Part II

Part II of Move What? No downtime? What?

Log Shipping Configuration

The strategy of log shipping to the two instances that will be the principal and mirror, will be configured in this part of the blog article. This step, since it is for testing can be completed through the wizard, but I recommend doing it exactly as it will be done in production so you get the hang of the backup, copy and restore process since it is across a slow WAN that could take many hours or possibly even days.

Configure Folders for Log Shipping Backups

In order to avoid as much confusion as possible, create a folder for each database specific to the log shipping process. If you don't have folders setup you're going to run into issues.

On each server create an empty folder for the log shipping and a folder for each database inside the log shipping folder.

These folders will be the home for the database log backups during the migration process. The current log backup jobs will need to be disabled during this process to ensure log backups are not missed. The log shipping restore jobs will restore the log backups from this location across the WAN.

For the log shipping full backup, create a folder for each database on both servers where the secondaries will reside. The backups will be copied to each location and restored. This is to simulate a large backup file backup, copy and restore across a slow WAN.

Q-MSSQL01-LB

Q-MSSQL11-LB

Naming Conventions of Logical File Name

So future scripts work as expected (based on a standard naming convention), make sure your logical file names are named with the same naming convention. The following script will help with this step. Replace <<DatabaseName>> with the name of your database. This will create a script you can run against the database. You'll have to be creative if you have more than one data file. Remember this is just for testing.

This is a good spot to take a break. The next step will involve SQLCMD mode.

Speak in Public? What? Me?

Gauntlet Dropped

This is my first time blogging for T-SQL Tuesday and I join in because this topic is one I have passion for.

Lets start by saying, public speaking is a very scary thing for many people. I know many database professionals who attend every SQL Saturday within 500 miles. You guys know who I'm talking about! These guys have accumulated so much knowledge from all of the sessions they've attended they should put together a session and submit.

I grew up being that loud mouthed, outgoing and aggressive...oh wait, not me my brother. Starting over, I was the shy guy, no kidding guys stop laughing. I had very little confidence in high school and about the same in college. When I told my guidance counselor that I wanted to study computer science he basically said I was overreaching. My ego was so small I almost believed him. Wish I remembered his name...jerk.

I started taking classes at Ball State University as a Computer Science major. During my study I decided to take a public speaking class, I can't remember why, I just remember if scared the bejesus out of me. My first talk was short and I could hardly speak from the shacking. I was miserable and a little embarrassed. To add insult to injury the lead cheerleader from high school, you know the really cute one...was in my class. What luck.

I made it through class, probably passed the class due to sympathy from the instructor and swore I'd never speak in public again.

Yep, there it is. Never again. Not if you paid me millions of dollars. Nope, no way, no how. You see where this is going right?

I have been a database professional for more than 20 years; do you think there is anything I can teach the newbies? You betcha. I remember back in 1996, when I was converting a Microsoft Access "app" to use SQL Server as the back end. The time I was a manager in the cellular phone fraud department at BellSouth Mobility. The fraud detection software we had was very limited in its capabilities because cell phone fraud was fairly new. Remember 1996 was the Atlanta Olympics. The fraud was a coming and it was going to be big.

I figured out how to pull the phone calls of all calls logged as fraudulent from the fraud system into MS Access and eventually into SQL Server 4.2 .... argh! I used the data to cross reference common phone numbers called by the fraud phones. From that I was able to create a rule that would allow me to generate a sheet for the Secret Service. Yes, it was pretty cool. There was my start with SQL Server.

Speaking, back to speaking...so, over the years my confidence in what I was doing grew. I was giving little training sessions to the customer service reps on how to handle the calls from people with fraud on their bills. Yep, public speaking at a smaller level, but still pretty scared when I started. Usually about 15 minutes in my excitement about my subject took over. I forgot that I was frightened of speaking.

As I progressed through all of my positions I had to talk to bigger groups of people, and still was extremely nervous speaking.

Years later I started meeting some of my DBA friends at a restaurant/pub called Taco Mac. These guys all were active with SQLSaturdays. I started helping by volunteering and eventually being on the organizing team in Atlanta. I had been to two SQLSaturdays before. At the time Aaron Nelson, Julie Smith, Audrey Hammonds, worked for me and got me involved with PASS. Aaron convinced me to go to SQL Rally in Orlando, then PASS Summit in Seattle the same year, 2011. Work even paid for it (amazing).

So what does this have to do with speaking? There are several things you have to do to speak:

Have a presentation.

Submit to your local user group or any SQLSaturday.

Get picked (usually pretty easy).

Practice.

Present.

The part I left out; usually you need someone to push you over the edge, coax you to pull the trigger. Take that first step.

That part was played by Aaron Nelson, Geoff Hiten, Rob Volk and Ed Watson. Weekly, Thursday nights, someone would tell me, you have to put together a session. I always came back with, Yeah, I know. Working on it.

Performance tuning and troubleshooting was something I did a lot and enjoyed doing. It is so much fun taking a developers code that he has improved run times from 15 minutes to 12.5 minutes. This query can't be improved! Let's deploy it to production. Ummmm... let me look at it. A few changes in the query and it is coming back in sub-second times. Its the face of the developer when he sees it that makes my day.

This is where I would start, showing a few best practice settings, a few ways to use existing free tools to help find the problem query...tada, I have a presentation. I named my session Performance Tuning for Mere Mortals. Why? Because I want to teach the beginners things I didn't know as a beginner.

I submitted for Jacksonville SQL Saturday since I knew a few of the guys going, but I didn't tell them until I got picked. I GOT PICKED! Wow, suckers, I'm a newbie, with a history of being deathly frightened of speaking. They picked me? Just to be clear, the Jacksonville SQL Saturday team follows the guidelines of give new speakers a chance. That's how we build the army of speakers to teach the masses for free.

Why am I doing this? I don't know. I'm not nervous yet...maybe later.

We loaded up my big blue Durango, with Rob Volk, and Damu Venkatesan.

The day of the event I had the pleasure of meeting several people who gave me some advice before my session...still not nervous...ok..cool... Chris Skorlinski an escalation engineer from Microsoft did a similar session before mine in the same room. So I went early to see his presentation. It had some good stuff in it that maybe I could add to a future presentation. I love going to sessions to learn from the speakers about speaking. I always learn something new. Chris and I talked a lot about presenting and he gave me a load of tips and tricks.

Now its my turn, not nervous yet. Wow, I had more than 40 people who want to here MY session... so I started. There were a lot of questions which was awesome. Even better one guy in the back of the room asked a few meaningful questions... I think he was a plant. :-) I remember seeing him in the speaker ready room.

Wait, still not nervous, but running out of time... I get a little worried about running over... yes this is my first session and I had way more questions that I expected... but its all cool. I like to build in extra slides just in case I get waylaid by questions or get no participation at all. Time is up... what? I finished on time and I didn't pass out. 1 down and I'm still buzzing from the adrenaline. I had multiple people come up and thank me for the great session...wow.

I went back to the speaker ready room and Chad Churchwell, Microsoft PFE (the guy from the back of the room) was in there. Again, I asked for feedback and tips. He gave me some great ones. Here was my start, all of the speakers are willing to help make you better and in a very positive way. I still talk to Chad every once in awhile, and I keep hoping to see Chris at a SQLSaturday...I have to do Charlotte next year.

Today, I've spoken at 20 SQLSaturdays and given 4 precon sessions. I've also presented twice at PASS Summit (the last two years). Not too bad for someone who was afraid of speaking.

The moral of the story is, you have something to tell, period. If you're a data professional that something could improve someone's life (business or personal). It could be the one thing that took them from beginner to senior, the spark needed to achieve great things, or even the one thing that stopped them and others from doing something stupid in production. :-)

You do not have to be an MVP or Microsoft employee to speak. You do not need to be a senior data professional. For that matter, you don't have to be a data professional at all. Just ask Karlyn LeBlanc who is not a data professional but presented Balancing Work and Home to Create a Better You at multiple SQLSaturdays I attended. Great session.

See, there really isn't any excuse for not putting together a presentation. You too could be presenting at PASS Summit next year! Take the first step. Put together a presentation. Ask me @SQLDiver to give you some feedback before submitting it. I'll even help with your abstract!

And for those friends that still aren't speaking... you know who you are...I'm writing this for you! Get your presentation together.

See you all at a SQLSaturday soon!!

SaveSaveSaveSaveSave

PASS Summit 2016

Highlights

Social Events

As usually the social events are the most valuable aspect of the conference. Most organizations are very critical about conferences assuming they are all about parties. Yes the headline for this section is social events...the most important thing gained from the social events were the relationships built with the other data professionals. People I look up to and have asked for help at one time or another.

My skills are better because of these guys, and their Tweets and Blogs. Knowing them and talking to them builds a relationship that opens doors for when I need help. And if I happen to see some good Karaoke while I build the relationship...awesome!

Monday Night Andy Warren Steve Jones Networking Dinner

Yardhouse is a great place for dinner. Add Steve Jones and Andy Warren and you have a great networking event!

PASS Summit Welcome Party

Tuesday night PASS throws this big First Timer/Summit Attendee event every year. It is a great way to network with first timers, and start building the relationships with SQL Professionals. There were so many first timers this year that I got to talk to, passed out close to 30 business cards. I hope they all stay in touch.

Denny Cherry/SIOS Karaoke

Denny always has the best party of the year. I have blackmail video tape on multiple people... you know who you are. :-) Actually, it is a who's who of the SQL Server World including Microsoft employees, Data Platform MVPs and the rest of my 200 closest friends! When Denny announces the party, you had better signup right away. This year the party was on Tuesday.

Redgate Rocks Party

Thursday night was a huge party night. Redgate had their Regate Rocks party where once again we had a blast with friends from around the globe. The Redgate employees are always awesome to hang around! Annabel, Grant, Karis, Tony, Carly and all of the Awesome Redgate employees know how to have fun.

Bush Garden

Bush Garden is the default Karaoke destination ... every night (I only made it one time this year). I saw R$% F#4rLy, #en%4 P@5*74, $%@#$%, and #!$%$!$ from Microsoft (redacted). What happens at Bush Garden stays at Bush Garden! :-)

Nope, I didn't sing!

Others

I attended many social events that were invite only that I won't go into details about since they were invite only. These are events where prior year socialization helped build relationships with Vendors that have helped my career greatly.

So in short, "socialization" is extremely valuable to the employers, because their employee is building his network of professionals (and potentially putting a bug in a future employee's ear).

Sessions

Of course my favorite session was my own. This is the second year that I've been a presenter at the PASS Summit Conference. I had 375 people attend my session, Execution Plans for Mere Mortals. It is only a 75 minute session (that I could make into an all day precon). As a previously, petrified of public speaking, speaker, I love getting on stage and teaching beginners. Sure I can teach some deep super advanced detailed session, but beginners are more fun and I love to give back.

I had a very long line of people who had questions at the end and wanted to give me feedback saying how much they loved my session. Always much appreciated. I had multiple friends and previous co-workers in the crowd which was even more fun. Several of them it was the first time for them to see me speak.

Bob Ward's "Inside SQL Server In-memory OLTP

Sitting right behind Kalen Delaney, the original writer of the In-Memory OLTP white paper (which I've read multiple versions), I got to hear the always deep Bob Ward teach us so much more than we'll ever be able to remember. Bob usually brings out the debugger very quickly to look at what is going on inside SQL Server (I think Geoff Hiten (@sqlcraftsman) said it was less than 12 minutes).

Awesome 3 hour session.

Joey D'Antoni's "Building Secure Applications in Azure SQL Database"

Joey gave a great session on Azure SQL Database security. I'm currently working with a client where security is extremely important and Joey gave me some good tips on how to answer their concerns with having their data in Azure.

I've been working with Azure for a short time (a little more than a year), playing with it a little longer, so the more experience I get the better. I am working hard to prepare for the 70-532, 533 and 534. I plan on taking all three before the end of the year. Keep your fingers crossed.

Bill's session was awesome, as it talked a lot about the Elastic Database capabilities in Azure. This one hit home as in the recent past I had a client who needed this functionality pretty badly. I'm already putting together my document about the Elastic Database capabilities for my client.

Brandon Leach's "Data Pages, Allocation Units, IAM chains... Oh My!"

I saw this one previously, Brandon does an excellent job of going through the data page. An awesome session for sure!

So many great sessions, I wasn't disappointed in any of the ones I saw. I am very sad at not being able to see several of the ones that were on my list such as Mladen's "Algorithms For Searching Through Encrypted Data". Great speaker and great subject. I missed all of the chalk talks which I love every year.

Steve Stedman's "When Database Corruption Strikes", who I've been following through the weekly "Database Corruption Challenges" that are too much fun.

Food

Yes, I said food... I gained 4 of the 6 pounds I recently lost. Breakfast is always pretty good (the bacon is awesome)! I'm a little miffed that breakfast ends at 8:00AM instead of 9. Many speakers spend their mornings trying to prepare for their presentation the morning of their session. I did, and I missed breakfast by about 45 minutes. I had planned on running in and getting my breakfast quickly then onto Dr. Dewitt's keynote.... unfortunately I had to go find breakfast somewhere... I had to prepare for a big day after all.

I'm going to say it once.... why does breakfast have to end so early (I see the amount of food thrown away in the morning and many attendees miss breakfast because it closes so early). At least allow speakers to get breakfast later.

The lunches are also awesome, chicken, steak, fish, every day.... did I say I gained 4 pounds?

And there is that one day I joined Karla and Rob V. at Blue C Sushi...mmmm sushi with my friends.

Goodbyes

It is always bitter sweet to say goodbye. Tim Mitchell arranges a final dinner at Crab Pot every year (sorry I was late Tim). Again, another opportunity to network with people I didn't know before.

Miss my #sqlfamily already and its only been one day!

Use your tools - SQLCMD

I'm at a client that uses SQL Server Database Mirroring for their high availability solution. The principal and mirror for the databases happen to have the data file on two different drive locations (i.e. they don't match). Why is this important when you create a file? Easy, the CREATE FILE command is a transaction that is sent to the mirror.

Run the CREATE FILE T-SQL or add a file from SSMS and you'll have an ugly situation on your hands.

Suspended? What this suspended status about? Oh, no, you've just made a mess.

So lesson one when adding a data file, know where your data files are on both principal and mirror. If you've gotten to this point you're going to have to remove the mirror and re-add it from the beginning. Not only that, but it is going to require a SQL Server service restart. You can't drop the mirror, you can't bring it online, you can put it into emergency... you're gonna have to trick the system. I actually had to shutdown the service, delete the data files. When the service started up I was able to drop the database. It turned out to be a bigger pain than I thought it would be just to demo it for you. Thank goodness I didn't have this happen to me in production.

So, the client was smart enough to already know the data files were on different drive letters and paths. Bonus! Now we can really work some magic.

So, let's look at what really needs to happen and save us from having to go through the effort of dropping the mirror and re-adding the mirror from scratch. I certainly don't want the production environment unprotected during the massive ... across WAN ... copy of the backup to the DR site.

The process is as follows:

Remove Mirror

Add File on "Principal"

Backup Transaction Log

Restore Transaction Log to "Mirror" copy WITH MOVE to the new location of the data files.

Add the mirror partner and witness (if it exists)

Set safety off if asynchronous.

So easy right? Well... the hard part is making sure every step is done correctly... time to look for that old tool... you know the one you may never have used because you didn't quite understand it. Ever used SQLCMD mode in SSMS? Yes, this is the magic.

Like many of you DBAs out there it took me years to see SQLCMD as the tool it really was. Getting others to find the magic has taken almost as long.

I recommended it as a tool to implement the data file addition, and the DBA got a look in his eyes, almost a fear that it would take too long to learn.

I whipped out my cape and pulled out the old wooden toolbox, and started digging through the tools... and buried deep in the bottom was this bright shiny tool that was all smooth and balanced and comfortable to use. It was very simplistic in its usage.

For SQLCMD, start with the easy basic commands:

:CONNECT INSTANCENAME

:SETVAR var "variable value"

There is enough to munch on for years in just those two SQLCMD commands. Look how simple this script is, but how much easier than writing multiple scripts connected to several servers. We can change our connections back and forth between principal and mirror server (don't forget your GOs).

The key to this script is the ability to test the script in another environment to make sure it works. Be prepared to make mistakes, set up your test environment by creating a database and set up mirroring. It doesn't have to have data in it. Make sure the data files are on different file paths.

If you tried to do this with the SSMS GUI it would be easy to forget a step, run a step out of order, get confused where you are. With SQLCMD, its all about the variables, the T-SQL code doesn't change.

The best part of this script, after helping the DBA write a script with SQLCMD to get comfortable with SQLCMD, I gave him my script with the SETVAR for each of the variables that would change. He was able to test it multiple times in a lower environment. When we was comfortable he modified the parameters to match production...and at 5:30AM (while I was sleeping), it ran flawlessly.It ran flawlessly for several reasons, 1) it was tested many times, 2) he was comfortable with the processes and 3) he was very careful to use the correct variables.

Summary

I covered the simplicity of SQLCMD and why it is a great tool to use for processes that need precise coordination and timing across multiple servers. It is important for you to push your comfort level to make your life easier. Most DBAs have more work than they can handle (its why I'm a consultant) so make your life easier and learn SQLCMD today.

I used the example of adding a new data file to a mirrored database where the principal and mirror used different drive paths for the data files. This script simplifies the implementation of adding a new data file to principal and mirror.

SQLServer 2016 is HERE!!

Features I'm looking forward to:

Always Encrypted

Daily an enterprise organization has made a bad decision of not keeping their sensitive data protected. Why? Well, the excuse is its too expensive, too difficult, will take too long, will slow down the database, yada, yada. You're not going to get away with the whining any more. Always Encrypted is a solution that should make the process of encrypting sensitive data at rest and in motion at a point the much of the data enters the database (the application). Yes, of course, just like other encryption technologies, you need to plan the process of encrypting your data.

Stretch Database

One of the coolest ideas for "stretching" data rarely used to the cloud. There are lots of limitations currently as well as some cost issues that make it very difficult for the average Joe to afford the Stretch Database feature. I'm hoping they get this one fixed fairly quickly. Please?

Query Data Store!!!!

Ever since seeing Conor Cunnigham talk about this feature at Summit 2014 my mouth has been watering. I started playing with it as soon as CTP 1 was released. The best article I found at the time was by Enrico van de Laar called The SQL Server 2016 Query Store: Overview and Architecture. This is going to make performance tuning more easier with more detail data available, the tools that monitor performance will begin to use the Query Store for its monitor data. Can't wait until all databases are on 2016... oh well... guess I'll be retired by then.

Live Query Statistics

I've been playing with this one a lot. Since it works with SQL Server 2014 (what? Yep!) as long as you're using SSMS 2016+ you will get Live Query Statistics for SQL Server 2014. I've been showing this one in my Performance Tuning for Mere Mortals sessions and pre-cons with Ed Watson. IT is a beautiful thing.

Did you ever have someone bring you a @#%! stored procedure that takes forever to complete? You would have to wait hours for the graphical execution plan to complete in order to see where the bottleneck is. Not any more! Now you can see the operators percents, and information as the query is running.

Dynamic Data Masking!

Ok, there are a lot of issues in V1, you can easily get around the dynamic data masking, and can accidentally overwrite the actual data with the mask... but it is a good start. I won't use it in V1..until they have the issues worked out, but nice start.

Row Level Security... woohoo.

Now were getting somewhere with security. We can control what a user or group has access to at a row level. This would have been very useful a few years ago for several projects I had. Maybe. I still need to evaluate it closely to determine if it will be beneficial.

Ok, Data Scientists... R, yes R is in 2016. It too has a long way to go to be fully usable (as I hear).

And it doesn't stop there... but I'm going to have to stop here for now. See you soon!

SaveSaveSaveSaveSaveSaveSaveSave

What can I do to Excel as a SQL Server Operational DBA? - Part 1

To achieve a position as an operational DBA is not hard these days, you just have to be in the right place at the right time. The hard part is reaching the competence level of senior DBA where you are able to handle any issue that is encountered.

Nothing is more frightening than receiving that first call in the middle of the night, "the database is down"! Holy $#!^ what do I do now? It is going to happen, it is going to be frightening, but if you work hard to expand your knowledge before you get here, you'll be alright.

So this brings me to the "expand your knowledge" talk. There are several things you can do that will force you to expand your knowledge:

Take a SQL Server Class. Well, if you're like me, and you don't have a good understanding about what it is you're trying to learn, it isn't going to help much. You just spent hundreds of dollars trying to increase your knowledge.

Trial by fire, this is the Oh Shit class, where as an accidental DBA you learn from your experiences.

Mentors. With a mentor (or mentors) you will benefit the most. Having experienced, smart people around you, you will have the opportunity to learn from others mistakes. I've had some great mentors over the years, many of them subordinates that worked for me.

There are rules about asking questions of your mentors:

Google the question first and try to figure it out on your own first. You will learn more by trying to find the solution yourself first.

Write down what you found out and try to describe how it is related to your issue.

Discuss the issue with the mentor. Talk through it at a white board so you can walk through it afterwards. Understand the solution.

The SQL Server Community. I can't explain enough how important (and different) the SQL Server Community is. Let me start by saying the Professional Association of SQL Server is a differentiator and an advantage over the competitor software. They sponsor the PASS Summit every year, PASS Rally every year, 24 hours of PASS and many SQL Saturday events every year (including my favorite SQL Saturday Atlanta).

The people you will meet will be life and career changing: Karla, Rob, Geoff, Denny, Paul, Phil, David, Kimberly, Jen, Julie, Audrey, Mark, Susan, Stuart, Aaron, Erin... and on and on!

The SQL Saturday and 24 Hours of PASS training is FREE.

PASS Summit and SQL Rally are phenomenal, the training is constant, for all levels of experience and the organizers don't get enough kudos for the work they do. It is worth every penny spent.

Local users groups, most affiliated with PASS, are great places to meet on a monthly basis to discuss SQL Server, usually involves a presentation and is also FREE.

READ, READ, READ...

Online training... love PluralSite. Your head will pop from the knowledge you can obtain from PluralSite.