Thursday, January 17, 2019

TSQL Tuesday #110

This month's T-SQL Tuesday is being hosted by Garry Bargsley (blog | twitter) - Automate All The Things. Since everyone's environment and experiences are different, he asks, "what does “Automate All the Things” mean to you?".

I love automating things. The thing you lose with automation is a human looking at something in order to figure out whether what is there is within guidelines or not.  With most companies, those guidelines aren't always spelled out well.  Therefore, it needs to be a thought out plan not just something that gets done quickly and not thought of again after.

For me, I think about automation as a project or process each time.  I learned the hard way that I want a lot of error trappings and alerts throughout.  For that reason, when I automate a specific process, I do so in multiple phases: 1) the base code that is needed is run, 2) error trapping is a lot more defined, 3) notifications to end-users are sent at appropriate times, and 4) self-recovery happens to help remediate errors not just report them.

For 2019, I am working on automating the monitoring solutions I am using. I will be combining multiple platforms to have an overall strategy for monitoring. I am taking the approach of listing everything that needs to be monitored, categorizing them into "buckets" and evaluating which platform would be best to monitor that specific bucket. Each bucket of metrics to watch out for have specific requirements which helps identify which platform would be best.  (I will be creating a presentation for this for upcoming SQL Saturdays, so if you are interested, watch for it!)

  • For instance, for real-time performance monitoring, I will be using Spotlight from Quest. That software product has a great UI which shows where to start digging for troubleshooting. Without that UI, I would have to look at multiple things and try to tie them together the same way the UI does for me.
  • For keeping an audit trail of what SQL statements were run and by whom, I will be using splunk. That platform is designed for event/activity based data and for storing and retrieving larger datasets.
  • For monitoring recent job activity and performance, I will be using t-sql. The structure is easy to query and report on from within SQL, so there isn't a need for an external tool.

On top of the actual monitoring, I also need to automate checks to ensure the monitoring is active and running. I think we have all been in the situation where, we thought everything was ok, but then we realized the job that is supposed to monitor wasn't even running!

Lastly, I think automation is a continual process. I don't know of anyone who will be able to say "I'm done". I continually ask myself, how can this be automated? This has become a habit for me now. I may need to add a task for the future, and I will probably keep the change to myself for a bit until I have it settled and running smoothly.

Write comment (0 Comments)

Virtual Chapter - Organization

I decided to write a series of blogs posts about the organization for a virtual chapter for the SQL community. This series wont be about PASS themselves, but I do want to mention them because the virtual chapter is the DBA Fundamentals Virtual Chapter, which is part of the PASS organization.

I have run an on-site chapter in Lafayette, Louisiana, which is 1 hour west of the Baton Rouge chapter. I talked with them before starting it, and it was going to be more of a sister chapter, that allowed me (and others) to not have to travel the 1 hour distance (and over the 18 mile - Atchafalaya Basin Bridge). Now, I am helping to organize the virtual chapter, and so far have been loving it!  

I have always been someone that self-evaluates and tries to do better.  Before being in IT, I understood that a company needs to measure their success, but didn't really pay attention to the specifics of how you do that - it was more of understanding the importance of the concept.  As a DBA, I pay attention closely to how something will be measured.  With that in mind, I will be talking with other virtual chapter leaders in PASS, and other areas to discuss what works, what hasn't, and why.  I am hoping to see some of the insights as I write about them, kind of forcing myself to know where to think out of the box a bit. :)

Here are some of the topics I will be blogging about. Once I write the blog, I will link it here for easy reference:

  • Speakers
  • Sponsors
  • Advertising
  • Social Media
  • Content
  • Evaluation and Growth



I will be updating this post with links to the other topics, including the monthly post that I will do for our sessions as follows:

Write comment (0 Comments)

DBA Fundamentals Virtual Chapter - January 2019

I am one of the organizers for the DBA Fundamentals Virtual Chapter.  I love having the opportunity to help in the community!


We have some amazing content for this month! Make sure to register for the sessions to start learning in 2019. Both speakers are veterans and presenting on topics that are significant for making your job easier and better.

WHAT:  Plan Stability through Plan Forcing
WHEN:  Tuesday, January 8 – 11:00 am CT


WHAT:  Free Downloads for Powerful SQL Server Management
WHEN:  Tuesday, January 22 – 11:00 am CT



Write comment (0 Comments)

2018 - A much needed Kick in the Rump

There are two big things that happened in 2018: 1) I quit my job and moved, and 2) midway through the year, I fell into a slump. This post will discuss both, but I have turned them on their head and am focusing on what I learned from those experiences, rather than dwell on them. Hopefully I am more positive than negative. :)

Read more: 2018 - A much needed Kick in the Rump

Write comment (0 Comments)

Asking others for Honest Opinions/Feedback

I just wrote an email asking for feedback from my co-workers, and it got me thinking how I even started that practice - which in turn also led me to think of past bosses I have had and how they have shaped who I am today, professionally.

I can name several of my past bosses by name, easily, even though it has been a span of more than two decades. A lot of people or situations come up where you have a negative experience, and that is why you remember someone. In my case, thankfully, its due to an overwhelmingly positive experience with them. From personal touches, to handling difficult situations in a way that showed strength and compassion, to bolstering me technically, I have been truly honored to have worked for some incredible people. Whenever the topic of mentoring comes up, my first thought is normally - look at your boss! :)

Anyway, back to the topic at hand: asking for feedback. At my most recent past employer, the CIO tasked everyone in the IT department to ask their customers for feedback. From that assignment, I don't know how many of my co-workers actually followed through, but I did. I wrote a beautiful email (if I do say so myself). When I went to hit send, I found it very humbling, and it was hard to actually hit the send button. After all, I poured my heart and soul into the email and I felt I would get a lot of negative feedback (I was stuck in a bad position at the time). To my surprise, no-one in my immediate circle of co-workers responded at all. I did receive 2 replies from a couple of others in IT, both positive, and 2 others who just responded that it was a great email (and they asked permission to use part of it in theirs).

I will admit, I felt quite a bit let down. I was whole-heartedly wanting feedback in order to improve things within myself. While I know in my head that there are a lot of people who say they want to improve themselves, but in reality don't, in my heart it was hard to reconcile that.

Now, when I ask for feedback, I reflect on how the tone of my email was back then, and what I want to say now.  To me, they feel totally different.  When I re-read the first one, back in 2014, I can still feel the pressure I was under, how I really wanted to live up to other's expectations, and truly help every way I could.  Now, I still put that pressure on myself, but I also realize I have to set the expectations myself and live up to them for myself (although that is sometimes easier said than done).

I am including a pdf of the email I first sent to my co-workers back in 2014, and the one I sent this year. Feel free to use part of it, or all of it, if you would like to. I am very glad that the CIO, my boss at the time, wanted me to do this exercise. It has helped me more than I realized even at the time.  I still dread hitting the send button, but am very glad when I do. It feels good to know I am moving forward in my professional life, and I can re-read the email I send for inspiration when I am down.

I challenge you to draft an email, humbly asking for feedback, and providing an insight into what you see as your challenges. Hopefully you will get a response and learn something about yourself. :)


CLICK HERE for my feedback emails


Write comment (0 Comments)

TSQL Tuesday #108

This month's T-SQL Tuesday is being hosted by Malathi Mahadevan (blog) - Non SQL Server Technologies. Mala wants you to share about learning things which arent SQL Server, but help to make us more well-rounded as the data world expands.

I don't know if this qualifies exactly, but I have been learning more about servers and hardware. I don't want to be a server architecture or administrator, but I can see how it helps to understand the hardware to do an even better job at knowing how sql responds.

It all started by using the monitoring tool Spotlight for SQL Server Enterprise from Quest. While there are multiple great tools out there, to me, this has a clean interface and is very helpful in seeing how the moving parts work together. I started wanting to understand all the metrics that the Quest team thought were important enough to visually show. Some of them I was familiar with such as sessions, blocking, cpu usage, and total memory, but there were others I didn't know about. Metrics such as buffer cache, page life expectancy, I/O speeds, etc., were not something I had not been exposed to.

Add to all of this, I had a co-worker at my last job who loved helping others learn and was happy to answer any question you threw at him. Saying he was the server guy doesn't do him justice, yet he still took the time to explain things as they came up. He opened my eyes to how memory coming off the north-bridge was going to be faster than the sticks of memory that are plugged into the motherboard, and why; or how and why the disk and raid configuration matters, along with many other things.

I cant say I know a lot of the hardware "stuff", it is a continual learning process for me. But, that is something that I believe helps me do a better job than I did several years ago. Also, even though a virtual environment doesn't see the underlying hardware in the same way, the concepts are still the same.  My next foray will be learning about the cloud - but that is a topic for another day. :)

Write comment (0 Comments)

Check AD members and groups

All of the companies I have worked for have individual AD accounts with permissions in SQL. They have all wanted to keep things easier by using AD security groups, but there are various reasons why that isnt always the reality, such as: software limitations, linked server config, legacy needs, changes impacting critical processes, etc..

I was recently introduced to the xp_logininfo stored procedure. It is a very handy tool to use to gather information about an AD account, or for user groups. Whenever someone asks for access, it is my go-to to find all of the groups they belong to which already have some permissions.  I still check AD to see if there are more appropriate groups (based on who else is in a group), but I thought I would share how this stored proc is helpful.

  • xp_logininfo 'ADaccountName', 'all'
    By including the AD account name, you can get a list of all of the AD security groups that user belongs to, which have permissions on that particular instance being queried. That last part is important. It isnt a list of all of the network groups that user belongs to - it is only those that already exist on that instance of sql. For example, if my account belongs to GroupA, GroupB and GroupC; the sql instance I am querying already has GroupB with permissions; then that will be the only result returned even though my account belongs to all 3 groups in AD.
  • xp_logininfo 'ADsecurityGroupName', 'members'
    By including the AD security group name, you can get a list of all of the AD members who belong in that group. This is an easy way of querying to get a list of everyone who has access.


Write comment (0 Comments)


Powered by mod LCA