Why I love dbatools

Standard

I’ve been working for the dbatools project for a while now and I felt telling you why I love this project.

A little background about me, I’m not a full time programmer. I learned programming with Java years ago and did little personal projects with PHP, C# and a couple of other languages. I started PowerShell about 7 years ago and thought I was capable of delivering solid code. That all changed with dbatools.

Being part of the team

So for the last year I’ve part of the project, from debugging code, adding new features to existing functions and adding new functions.

A world opened up when I first joined the project. I had no idea I would be learning this much in such a short time. I had to deal with GIT, QA, advanced modules, styling, Pester etc.

So my first command was a little command Find-DbaOrphanedFile. One time Chrissy LeMaire asked if someone could make a function to find orphaned files of databases. I jumped in because I knew this was something I could do and I didn’t have the chance yet to do help out with the project. In about two weeks I had the function done as far as I knew. It did the job and now I wanted to present my awesome code to other developers.

My first challenge was to get to deal with GIT. I had never used GIT and the only source control my company had at the time was Visual SourceSafe. Don’t judge me! I wasn’t the one that decided to use an out-of-date piece of software. Of course when you do things the first time you’re going to fail and I failed big time. I made a branch from the wrong fork, committed stuff but didn’t synchronize it, created a pull request (PR) in the wrong branch and more. I did everything wrong you could do wrong and still Chrissy was nice as always trying to help me out to get everything on track.

After the GIT hurdle I finally submitted the PR and after about a day I got a kind but long comment back from one of the members that did the QA. Before I started, I read some of the standards the project put in place but as a developer you want to get started and a as a result I forgot some of them. The funny thing was though that I learned more about PowerShell, modules, functions, standards etc in that one comment than I had did in the last 4 years.

What struck me was the way the members dealt with the people like me who weren’t familiar with a more professional way of development. The members understand that reacting the wrong way, I would’ve quit helping out with the project because it would be too overwhelming.

That’s one of the strengths of the project, to embrace everyone that wants to help out. Find a way to make everyone a functional member of the team being either a developer, QA, writing articles etc.

That made me more enthusiastic about the project and I started to contribute more. Now I’ve become one of the major contributors.

In the last year I learned more about PowerShell than I did in my history of doing PowerShell. I’ve become more precise when it comes to my code, I go over my tests in meticulous way and try to keep by coding standards. I looked back at some code I’d written over the years and imagined that some crazed out monkey with a brain fart high on crack made it. Now I go through all the code I’ve written over the years and redo everything that’s no longer up to my new standards.

Being a user of the module

The other reason I love dbatools is because it has made my life soo much easier. I see myself as one of the lazy DBAs that would rather spend a couple of hours automating his work, than having to do the same thing over and over again. The project has about 200 different functions and it’s close to releasing version 1.0. This is big deal due to a lot of standardizing, testing and new functions that are going to get released. With that amount of functionality in one single module there is bound to be a solution for you in there to make it easier to do your work. Nowadays I test my backups every day using the Test-DbaLastBackup function. I see the status of all my backups on all my database server within seconds. I retrieve information about many servers without having to go through each one of them. And migration have been a blast.

If you aren’t exited about the project yet, please visit the website and look what has already been accomplished. Go see all the commands and then decide if it’s worth implementing in your daily work. If you’re wondering if a command is there that could help you out, the command index can help you find more information. This is still in beta though but we’re working on getting the information in there.

Thank you!

I want to thank the dbatools team for making me feel welcome and to boost my knowledge to a point that it has made a significant impact in the way I do things in my daily life.
I also want to thank all the contributors that put in all the effort to get the project where it is today. Without all the people putting in their valuable time this wouldn’t have worked.

No One Listens To Me! Why? Part 2 – Colleagues

Standard

In part 1 of the “No One Listens To Me! Why?” series I described a situation where I had to convince my manager to take action on some actions.

This story will again be a true story where this time I had to convince my colleagues.

Colleagues

I went on the the SQL Cruise, which is a fantastic way to learn and meet new people. I attended a session by Argenis Fernandez (tl) who touched a subject about page verification.

Coming back to the office I wanted to start implementing my new acquired knowledge. I first investigated some of our main databases. What I found was that some of our databases were not configured with the right page verification. They still had the page verification set to “NONE”.  These databases were not installed by me and I had not considered this to be set this way.
If you know anything about corruption you’ll know that this setting is crucial to find corruption in your database.

Due to the impact this could have I went to the application engineers and arranged a meeting with them. There was a reluctance to come to the meeting but it was important to discuss, so with upside down smiles they arrived 10 minutes too late to the meeting.

The following conversation took place:

Me: I did some investigating on a couple of databases and found that there are some settings that need changing. We’re now on SQL Server 2012 a we have databases with settings dating back to SQL 2000. One of the I found is that our main database is not being checked for corruption.

Application Engineer (AE) 1: How do you mean doesn’t get checked for corruption we do a weekly DBCC check don’t we?

Me: Yes we do but that has little use because the pages in the databases are not marked with a checksum. Besides it’s only once a week if we’re already doing it due to weekly and monthly processes. There is a setting that enables the verification of pages in the database and this helps us find corruption.

AE 2: Ok but do we need it? Why should we enable it?

Me: Just as I told you it’s for finding out if a corruption took place in the database. Any corruption in the database is a really bad thing and should be avoided at any cause. If we don’t enable this we’ll not know if there is any corruption in an early stage. We would only find the corruption if the page is severely corrupted or if someone accidentally selects the data. To ask you a question, do you want to vouch for a database which could potentially give you corrupt information?

AE 1: When was this setting first released and you still didn’t give an answer why we should enable this.

Me: You’re not listening to what I’m saying. The feature was first released back in SQL Server 2005 and was so important that Microsoft made it a default setting for all new databases. As I answered this question many times, we need this to find corruption at the earliest moment possible.

AE 1: What’s the downside to his? I don’t know if our processes will be hit if we change this.

Me: There is no downside, it’s a setting that helps us. The only thing it’s going to do is from this point on check all the data that’s written and create a checksum for it. The next time it’s being read, it will check the checksum with the page and see if it matches.
But I understand you, I want this setting to be enabled and tested thoroughly before we put it in production.

AE 1 and 2: I’m still not convinced.

Me: You know what I’ll do? I’ll setup a demonstration to show you how this process works and how easy it is to corrupt some data in a database. Based on that we can decide what to do from that point.

As you may read through the conversation I had to deal with people who were scared of change and were reluctant to listen to anything I told them. I still had to cooperate with them to get this change done so I moved on.

Like I said in the previous article, you have to have the facts to build your case and that was the reason I wanted to show them how a corruption could work and why this setting was so important.

I created a demo and did the presentation to the application engineers.
I showed them a healthy database, corrupted the database with the setting we’re currently using and we didn’t find the corruption. I did the same thing with a database with the new setting and of course it showed me the corruption.

The outcome was far from satisfying because they were still not convinced.

Up to this point, let’s check what went wrong:

  1. Strong arguments did not work
  2. Nobody cared about the fact that situation could actually happen.

Strong arguments did not work

Even with the evidence in front of them I couldn’t convince my colleagues. The question they asked my in the end was: “But how many times would this actually happen?”.

If I wanted to I could’ve just changed the setting and let nobody know. In previous testing I got no performance loss and had no other symptoms either.

But that’s not what I wanted to do. If something would go wrong for some reason I would get the blame and that wasn’t what I had in mind.

From this point on I should’ve gone higher up the chain of command to my manager.

Nobody cared about the fact that situation could actually happen.

This hit me right after I did the corruption demo, they didn’t care and as long as it all worked they were not going to keen on changing anything. I understand the last part because I don’t want to change that works, but this was different because we didn’t do any thorough checks.

You’ll never be able to convince these people. If you get to this point and you did all the work, laying out the facts (and even demos) than take your losses and go higher up.

I did everything but still they won’t listen

Ok, so this situation is an extreme one. I was not able to convince my colleagues and this was a scenario that I couldn’t have won.

Instead I went higher up the chain because in the end my supervisor would be responsible if something would go wrong. My supervisor first reacted the same way as my colleagues. To make sure I got my point across I went to the IT manager.
I explained the situation and showed him the possible downtime and how much it would cost if we didn’t put this setting in place.

In the end the IT manager was not pleased with the whole situation and my colleagues and supervisor were called in to explain their reasons. That last thing came back came back to bite me.
That didn’t stop me because if we didn’t put the setting in place I would have been responsible to fix everything even though my colleagues were the ones who decided not to change anything.

Conclusion

Like I said this situation was an extreme one. In normal circumstances, with people with right attitudes, this would never happen. I’ve had other situations where it was the opposite of this and that my colleagues would listen to reason.

In the end it was my responsibility to make sure the the data is protected. You’ll always have people who will not agree with you about something. In most situations you’ll be able to get them convinced with the cold hard facts.

If that still doesn’t work you have to go higher up the chain of command. I’ve always been rigorous when it came to my work and if someone was in the way of me doing my work properly I would go around them.

That doesn’t mean you have to do that all the time. Choose you battles wisely and put your effort where it would make the biggest impact for you to deliver the best work you can.

Work After Hours

After hours email
Standard

It’s 8 PM, the kids are in bed and the wife and I are finally able to get some time for ourselves until I get an e-mail from work. Do I open the e-mail after hours or will I get to it in the morning? But what if it’s important and I have to act now? These days it’s we have to deal with blurring boundaries between work and life which has an impact on the so called work/life balance.

I recently read an article about France introducing a new law that where French workers are no longer obliged to respond to work related e-mails or phone call after hours.

What’s not really clear is if this bill limits the communication to e-mail and phone calls only or that they also included messaging apps too. These days we also use apps like Slack, HipChat, WhatsApp to communicate with colleagues which could be a loophole.

The thing that comes up when I read this is that in most situations it will not work because you’re removing all the flexibility. The other thing is that most companies evaluate employees based on their availability and their flexibility.

There also a side note that employers are allowed to make different arrangements with employees.
Employers will probably adjust contracts from this point on that, if you’re in some sort of position where the availability is important, you’re obliged to answer which will render the law useless in a lot of situations.

I never had a problem responding to work related e-mails after hours because I think in my profession as a DBA it’s part of the job. Usually you’re the lonely DBA (or part of a small team) and when shit hits the fan there’s nobody else that is able to fix it. That’s not only in the field of the DBA but mostly with all the colors of the IT rainbow.

In my opinion I think you’re responsible for setting your own boundaries to make sure your work/life balance doesn’t get distorted in such a way that it will affect you personal life in a bad way.

One thing I’ve always done is that when I was in the situation where I had to be available after hours I would have a separate phone. If I’m on vacation and I’m not able to respond, or don’t want to respond, I leave my phone at home. I would give my personal phone number to a very limited group of people that only in the case of a real bad situation they could try to contact me.
This has always worked out for me and fortunately I’ve had employers that respected that arrangement.

Still France has passed this law on January 1 and the thought behind is admirable but if this will ever work is something we’ll see in the future.

 

 

No One Listens To Me! Why? Part 1 – Management

Standard

What if you’re in a situation where you see that something needs fixing but no one listens to you about what you have to say.

It seems unreal but I’ve been in situations where I had the hardest time convincing managers, colleagues and even third parties that there was something seriously wrong.

I’m going to share my experience with the three of the parties and how I made sure I was always in the clear when something would go wrong.

This is not an article how to spin the wheel of blame because that’s never a healthy situation. This article will give you tips and tricks how to make sure you get your things done and how you can avoid to become the victim of a situation where you’re to blame.

These are actual real situations I have been in so there is no fiction in the stories that are coming.

Management

I start fresh at a new to the company as either a DBA and I was the only DBA a.k.a. the Lone DBA. The former DBA had left (I never got to know the reason) and I had little to no documentation.

The first things I did was do checks on backups and collect information from all the instances.
I noticed that all the backups are full backups. The backups ran for hours and there is a lot of contention due to other processes wanting to process their data.
It seemed all the databases are all in simple recovery mode. Normally that’s not a good sign but there could be a good explanation.

I send an e-mail to my colleagues in the IT department if anyone knew why this is set up the way it is. Of course nobody knows and it’s a dead end. Documentation is there and I’m already happy that the backups ran for the last few weeks.

I was the only DBA and therefor responsible for the situation. Unfortunately because of costs of disk space and other processes I wasn’t able to implement my solution without the consent of my manager who was also the change manager at the time.

I go to my manager have the following conversation:


Me: “Are you aware of the fact that all our databases are in simple recovery mode and that we make full backups of all our databases which take a considerate amount of time and make other processes run longer than needed?”

Manager: “Yes! I know why we did that. The transaction log backups were too difficult to recover so we make full backups all the time. It’s easier right?!”

Me: “You’re also aware that due to the fact that we run in simple recovery mode we have no way of recovering to a point in time and in the case of data loss can only return to the full backup?”

Manager: “Yes I’m aware of that but it doesn’t matter because we have calculated that it doesn’t matter if we lose 24 hours of data because we’ll just redo all the work that’s lost.”

Me: “That’s ridiculous because it’s not that difficult to implement a backup strategy that could avoid that situation. Why wouldn’t we want to do that?”

Manager: “Because we don’t need it and why put in the extra effort if nobody in the company cares.”

Me: “We’re clearly not on the same page and I think you underestimate the situation.”

I stop the meeting and walk out of the room to think of a plan to make sure this doesn’t get back to me when all hell breaks loose.


So let’s evaluate what went wrong:

  1. Nobody in the company knows why things were set up the way they are.
  2. The company has no idea what the impact of a data disaster could be.
  3. Nobody cared about the fact that situation could actually happen.
  4. I couldn’t convince my manager at that moment with good arguments.

First of all let’s be blunt, if shits hit the fan you as the DBA are ALWAYS, read it again, ALWAYS, responsible to recover the data even if you’re not responsible for the situation at hand. Management will not care about the fact that you mentioned this all months ago, they want everything fixed yesterday. It could even backfire (I had that situation) because you could be blamed not to take responsibility.

So how could we act on the points in the evaluation.

Nobody in the company knows why things were set up the way they are

Start documenting the backups, the schedules, the databases and the servers. If you don’t have something like that already read my article how to document all your servers in minutes.

Also document the architecture of the different applications and their relationship with each other. What interfaces are running between the systems etc etc.
Are there any financial applications that rely on interfaces on the main database for instance. What processes are running during the day that could be impacted.

Make a diagram of the connected applications/processes that are dependent on the database(s). Most people understand things better when they’re made visually.

Try to make sense of the current situation and make sure you have everything in writing. If it’s not documented you can’t prove that something is wrong.

I know this all sounds like a lot of work, but if nobody knows, you should. In the end this will save you loads of time and let you become the person that took the responsibility.

The company has no idea what the impact of a data disaster would be

Here is where documentation is important to get the facts straight. I’ve seen a lot of companies underestimate the situation that there is a real problem. Like I said before, if nobody knows, make sure you do.

If there is a disaster recovery plan see if it’s still up to date and if not make it so. Based on that information try to estimate how long it would take to recover all the dependent databases/processes when the main database is down.

Make sure you know how long it takes to get everything back in order and make sure you have a procedure ready when it does happen. This not only shows you’re proactive in your work but that you can also act when needed.

And one thing you should do is test your DR plan. You plan is worthless if it doesn’t work. Test it periodically to see if it’s still up-to-date.

Nobody cared about the fact that situation could actually happen

One thing I would do is manage expectations. I want everyone in the company to be on the same page with this that in the case of an emergency.

The manager in this situation thought the loss of one day of data was good enough for the other departments. These decisions were made years ago and the entire landscape had changed and the DR didn’t.

I asked the same questions I asked my manager to the managers of several departments and their reaction was a little different. Several managers explained that they would be in a lot of trouble if the application was even offline for half a day and others even for several hours.

Because this was not going to be a healthy situation I called for a meeting with all the managers and me. In this meeting I would explain the situation by the documentation (like the diagrams) and come up with a plan to get the DR up-to-date.

I did everything but still they won’t listen

If you did everything to convince the people and they still don’t want to set up things you would like to, either because of costs or other reasons, I would protect myself.

Make sure all the decisions that were made are in writing, the good and the less good decisions. I would send an e-mail to my manager with the decisions and explain the consequences. After that I would ask my manager to acknowledge the e-mail.

You don’t want a decision outside of your capabilities to come back to haunt you. I’ve been in such a situation and you don’t want to end up there.

Conclusion

It all starts with taking responsibility. If you don’t take responsibility for the data as a DBA I suggest you go look for another kind of job. After that it’s important to get the facts straight. You can’t build a solution based on assumptions. One of the quotes I use: “Assume” makes an “Ass” out of “U” and “Me”, AssUMe.

It’s very important to feel comfortable in your work environment and you should do everything to make sure you go to work with a good feeling. You spend more time at work than you would spend at home (remote workers excluded 😉 ).

 

 

 

 

Reflection On My First Webinar

Standard

reflectionAfter my first presentation about a few weeks ago I got the chance to present for the PASS PowerShell Virtual Chapter thanks to Aaron Nelson and Chrissy LeMaire. To help myself and other I’d like to do  reflection on my first virtual presentation.

During the weeks before the event Aaron or Chrisy would inform me about the amount of attendees that registered for the event. At first it didn’t go that fast but in the last few weeks before the amount of attendees grew to a staggering amount of 300! No pressure there 😉

I practiced like mad to get my presentation exactly as I wanted it. I read upon Cathrine Wilhemsen’s post, Presenting a webinar for the first time, to get some invaluable tips. Citrix also published a few tips that helped me out 10 Tips to Look Like a Rock Star in Your Next GoToMeeting Session.

A few days before the webinar I caught a cold and of course had to cough a lot. That’s not an ideal situation for giving a presentation especially when people don’t see you and only hear you.

Be prepared

  1. Download and install the software for the webinar
  2. Get comfortable the interface
  3. Try to create a webinar and test the different functions
  4. Start a webinar with a colleague or a friend to test your presentation.

Me getting prepared

I like to be prepared especially if people are counting on you. Aaron was so nice to login to the webinar with me an hour before the presentation. It turned out a good thing that we did that because some things worked a little different than expected.

I had already download Citrix’s GoToWebinar software to make it easy to login to the webinar.

On thing for instance was the fact that I have multiple screens. If you have multiple screen you have to use the drop-down which is located under “Start sharing my”.

gotowebinar sharing dropdown

This complicated a few things for me because I constantly had to switch between screens when doing the demos. In the end I got the hang of it and switching screens become smoothly.

Be sure not to put any screens, which aren’t selected in the drop-down box, over your current shared application. If that happens the GoToWebinar software will show a highlighted border around that application because the attendees will not be able to see your shared application.

What Did I Learn From This Presentation, And What Feedback Did I Receive

If you have experience in working remotely and having conference calls. It’s exactly like that but instead of people talking back, you’re the only one talking. The fact that you have no interaction with the attendees makes it hard to gauge the audience.
If you don’t have a lot of experience in having conference calls try tip 4 in the “Be Prepared” section.

I didn’t pause to ask the audience if there were any comments or questions. That could’ve made a difference that I could’ve adjusted some parts to make some parts easier to understand.

I paused at the wrong times in a phrase, which was caused mostly by the fact that I had to cough, but I noticed it in several other parts which made the delivery of the message not that efficient. This means I have to practice even more.

In the last presentation I did I went through the demos too fast. This time I took the time to explain several concepts in the code. I got a lot less questions about the code than the last time from which I may conclude, considering the bigger audience, took away a lot of questions.

Conclusion

In the end I’m glad I did the webinar and it thought me a great deal of things I can use in the future. The scariest part was starting and now that, that’s over I can focus on improving my skills.

I want to thank Aaron and Christy for all the help because it made me better focus on the presentation.

If anybody attended the presentation and has any feedback, please send it over. I appreciate any feedback how small it may be.

Up to the next one!

Reflection On My First Presentation

Standard

I finally got the chance to present and I want to do a reflection of my first presentation. What do I think went alright and what can I do to improve. I want to share my experience presenting because this was amazing! If anybody was present and wants to give more feedback or has any other tips please leave a comment. All the feedback is appreciated!

In 2015 I had the opportunity to go to the SQL Cruise Mediterranean. During that trip I was amazed by the people who came to present and the level of skill they had.

I’ve been blogging for a while and I wanted to take the next step and start to present. It wasn’t until the SQL Cruise that I really set my mind to it. Also the MVP’s there convinced me to do it and of course who would say no to Grant Fritchey who’s telling you to do something (imagining the baseball bat in my mind…. )

A couple of months later I meet up with Andre Kamman on the SQL Saturday Netherlands and we start talking about presenting. I had a presentation ready but never had the opportunity to present.

The day comes

When I got the message from Andre about the event I became a bit anxious.
Would I be able to keep the attention of the attendees?
Was the content good enough to present?
How many people would show up? 10, 20, 50…..

Just a few weeks before the presentation Andre send me a message that there is more than a hundred people coming to the event. OMG!

What Did I Know About My Presentation Skills Up To Now

Imagine that I’ve never done a presentation like this before. Of course as a professional you have to occasionally present for colleagues but that’s something completely different. Besides presenting for colleagues, everybody has to present themselves during an interview for a job.

Also I’ve got experience teaching kids martial arts from the age of 5 to 18. If I had any experience standing in front of a difficult crowd try teaching a class of 30 highly active 5 to 12 year old kids and try keep their attention. Thank you Sensei!

So I knew I’d probably not get nervous presenting in front of a large group.

What Did I Do To Prepare Myself

Tips From The Pro’s

I’ve been fortunate to know people how have been presenting far before me (thank you Jes, Grant, Argenis and Tim). They gave me invaluable tips on how to prepare for a presentation

Here is a list of some of the tips I got from them:

  1. Enjoy!
  2. Practice, practice, practice
  3. Test your demo (if you do a demo)

Enjoy

First of all you have to have fun doing it. If what you’re telling people doesn’t create a spark in you than you better not present about it because everybody will notice. People came to watch something that interests them so you have a relationship there.

Also this is fun, you get to tell about stuff that matters to you. If one person goes away from the presentation thinking they learned something you’ve already won.

Practice, practice, practice

You’ve got to practice your presentation until you no longer have to think about what to say, just how to say it.

Record your presentation and take notes on how you sound, on how fast you speak and about the things you say.

Present in front of someone else and have them take notes on how you did.

Test your demo

Make sure your demo is solid. Go through the demo as if you’re presenting it.

Make sure your physical or virtual machine is working perfectly. There’s nothing worse than trying to do a demo and everything false apart.

The Internet Is Your Friend

I went online to my good friend Google and searched for tips on the internet. I found a lot of information how to prepare.

A few I found helped me out:

What Did I Learn From This Presentation, And What Feedback Did I Receive

In the past I learned that I’d rather just talk than have lots of text in my slides. It’s because of that that my slides never have more than a few bullet points. In most cases the slides will have one word or small sentence.

Because I had little to no text in my slides I rehearsed my presentation numerous times. However, even though I had gone over what I was going to say many times, I still stumbled and stalled a few times during the presentation.

In the first part of the presentation I noticed that when I got a question, I would turn the question to myself instead of answering the question. People ask the question from their own perspective and I should never feel challenged about these question but take them with me to improve my presentation.

The second part went a lot better because I finally got into a flow where I no longer had to think about what to say but got to presenting. This was the moment I got a lot more questions and I was able to answer most of them.

What Can I Do To Improve My Presentation Skills

I learned that my confidence level wasn’t too high. That might be the reason why I going through the slides pretty fast the first part of the presentation.
I noticed that after I presented the demos there was a lot more interaction with the audience. This might be because I tried to interact with them more by asking questions to the audience.

The interaction made me think less about the presentation itself and more about what I wanted to present.

I think that I started the presentation with a story made the audience connect. I could’ve made the story more interesting and more about the presentation.

Overall I was pleased with all the feedback I received both the good and the bad. I learned the areas I was confident in and also areas that could use some improvement.

I want to thank all the people who were present at the presentation and especially the ones who gave their feedback. I want to thank PASS Netherlands, and in particular Andre Kamman, for giving me the opportunity to start presenting. This is just the beginning and I’ll certainly continue to present in the future.

 

 

 

 

DBA performance evaluation

Standard

evaluationLike most people I get my yearly performance evaluation but I’ve had the experience that my peers don’t really know how to evaluate me. So how do you effectively evaluate a DBA.

Your manager/team leader/superior has the information from previous performance interviews and based on that sees if you have performed as you should, or under, or above what was expected.

What I found out is that when the IT department doesn’t have a good understanding of the DBA’s responsibilities and possible metric to measure the effectiveness of the DBA (group) the evaluations don’t work.

How are most evalutions done

Your superior should have at least the following information:

  1. Knowledge of the DBA’ s job requirements
  2. Record of classes / training attended throughout the year
  3. Attendance records
  4. Productivity reports
  5. Records of previous performance interviews

You and your superior come together and based on the information above your superior shows how you performed.
In most cases you only have little room for discussion because most things are already discussed in previous interviews.

The problem

The problem is that there are so many factors that make this so difficult. A few questions that come to mind are:

  1. There are many different types of DBA’s, which one is used for evaluation
  2. What are the metrics to measure the performance and effectiveness on
  3. When is a DBA successful and and when is his/her performance good/medium/bad

The problem with this is that most managers I had (don’t get offended if you’re one of them this is just my experience) only look for certain aspects that can be found in other IT related jobs like how many incidents you solved or changes that are made.

You can look at the amount of incidents that were registered and fixed during that year but that’s only the case when you talk about real incidents like a server going down, low disk space or performance related problems.

This can be very offending towards other people who could do a tremendous amount of work in the background but is never really visible.

A DBA is a “jack of all trades” kind of person but to clearly evaluate a DBA you have to have a clear understanding what he/she does.

The solution

To address the first question in Problem-paragraph Craig Mullins wrote a nice article about this which gives a good overview of what kind of DBAs there are. Of course there are different versions and flavors especially with the DevOps who are hot nowadays.

An article that helped me out and for most still applies is an article written also by Craig Mullins called “Measuring DBA Effectiveness“. It helped my manager and me to create an evaluation metric.

The last thing, and I surely hope that’s in place, make reports from your service management application like Topdesk or SysAid. The reports give a clear understanding of the workload that’s been done.

To have another metric for the workload I used Brent Ozar’s “sp_Blitz” to create a health-check with all the items that need to be addressed. When an item of the list is done, remove it or give a status done, to keep track about what’s been done. When the manager asks for the progress of the list you can hand over the list.

I hope this helps you out for your next evaluation.

 

Should I support this database?

Standard

database_supportAs DBA’s one of the jobs is making sure all the databases and database servers are working properly and you have a controlled environment. Once in a while you have skeleton in the closet where suddenly a database server comes around and you’re scratching your head where it came from.

Your manager (and maybe your colleagues) expect you to support it because you’re the DBA. You don’t know the server, your colleague doesn’t (really) know the server. So now what. Are you going to take responsibility for everything on the database server of the database itself when you don’t know anything about it?

I have had this so many times that I decided not to support a database (or entire database server) until I did thorough scan of the environment to see if the database server is up-to-date, the settings in the server are set properly etc.

I use this checklist to make sure I cover all the aspects of the server:

Database server

  • Is the server a virtual of physical server?
  • What version of Windows (hopefully Server edition) is being used?
  • What version and edition of SQL Server is being used?
  • When was the last time the Windows OS was updated?
  • When was the  last time the SQL server instance was updated?
  • How much memory is in the system
  • How is the storage configured?
    • What disks are being used?
    • What kind of disks are being used?
  • How many cores are present?
  • What services of SQL server are running?
  • What accounts are being used for the services?
  • What logins are present in SQL Server and what are their permission?
  • And maybe the most improtant one, is there a SLA on this server?

Database level

  • What’s the size of the database?
  • When was the last backup taken?
  • When was the last time an integrity check was executed
  • How are the files set up?
  • What compatibility setting is being used?
  • What are the options in the database, i.e. auto close, updates of statistics, page verification etc?
  • What users are present in the database and what are their permissions?

resized_diagnostic-house-meme-generator-it-s-not-the-database-it-s-never-the-database-but-it-might-be-lupus-d2af08This is just a small list of the things I’d like to know about a database or database server. Based on that information I can make a decision either to support the current state of the database or server or not to support it (support it best effort) until I’ve gotten the chance to change settings I don’t approve.

Normally you’d get a discussion why you’re not fully supporting the database or database server. People know you’re the DBA and that it’s your job to support the database servers.
Unfortunately we’re not living in a perfect world and as soon as shit hits the fan, and you’ve taken full responsibility for a database that’s not up to your standards, then you have explain yourself and don’t say the database is not up to your standards because you should’ve have said that from the beginning.
In these situations I would put all the findings in writing and inform the IT manager of the “new” database or database server and what to do to support it. This may sound political but you’ve got to protect yourself. I’ve seen people get lower performance reviews because they supported items that were not up to standards and had gone haywire.

resized_jesus-says-meme-generator-jesus-says-sort-out-the-fucking-database-675a7dOne of the situations I had was a database server installed by a system administrator working at the software vendor. No documentation about the installation, configuration, databases, logins etc. It was all installed during a project and now the project was finished, maintenance was the responsibility of the DBA’s. Logins used as service accounts for the application running under sysadmin privileges, no min or max memory set, SQL Server service running with the local system account etc etc.

I wasn’t going to fully support this server and mentioned this to the IT manager in writing and personally. It wasn’t that the server was buggy but it wasn’t up to standards. After a while we had an issue with the server. Turned out that the service account of the application had destroyed the system database because a consultant forgot to include the “USE [database]” clause in a script and because it had sysadmin privileges, the default database was “master”, it dropped and truncated a lot of tables. Besides the fact that the consultant did all that DDL with a dynamic query, if the privileges were set correctly, the login would never been able to corrupt the system databases.

It took us many hours to get everything back up and I was called into an office with some managers who wanted to know why the server went down the way it did. The managers were angry because this incident cost the business a lot of money, a full department couldn’t work and foremost customers couldn’t be helped.
All the findings were put in changes, the changes were scheduled in a low priority by the business because the chance of things going down was pretty slim.
I mentioned the findings and the correspondence about the low priority changes for the findings. If I hadn’t done that I would probably have been fired because of the impact the incident had on the company.

It’s not about playing the blame game but if it’s not in your power to change things that should be changed than you have to protect yourself. At the end of the day you want to the best job you can do and have a good night sleep without the thought in the back of your head that hell could break loose at any moment.

If you have any stories like this please share them in the comments. I’d like to hear if anybody had the same experience I had and maybe it helps someone else to avoid such a situation.