SQL Saturday #357 Recap

In January I posted about a couple of upcoming speaking engagements and after some nagging for a follow up from @JayDue216, here it is. First up was the Ohio North SQL Server User Group’s January meeting. This wasn’t my first time speaking in a professional setting but it was by far the audience with the most SQL Server experience I have been in front of. All in all, I thought it went alright. I didn’t feel too great about it immediately afterward but I received some good feedback from those in attendance which is always great to hear. Nerves got to me a bit and I caught myself tripping over my own words at a few points. I had a great deal of confidence in the content I developed and I can’t express enough how valuable that is when your delivery isn’t going as smoothly as planned. Having that confidence allows you to slow yourself down, gather yourself, move to the next slide, and keep powering through the session. At the end of the day it felt good to get the first one out of the way and identify areas for improvement.

After getting my feet wet next up was SQL Saturday #357 in Cleveland. I was initially scheduled to speak early in the day but an out of town speaker was hoping to catch an early flight home and I agreed to move to the last time slot of the day. I caught a few sessions early in the day, but I ended up spending a great deal of the time in the speaker room going through my presentation to make sure I was ready to go.

SQLSat357I only did it for the sweet SQL Saturday pullover

Unlike the user group, I felt very good about the presentation after I had finished. I didn’t feel myself tripping over my own words this time and my demos went smoothly. Despite being the last session of the day I had a full classroom and the audience seemed pretty engaged throughout the entire presentation.

I definitely plan to submit to more SQL Saturdays going forward. For anyone interested in speaking but is on the fence: just go for it. Everyone has fears and reasons for avoiding them but the feeling of learning a subject inside and out and then delivering it successfully is absolutely worth taking on those fears.

Happy 2015

New year, new updates. After a brief stint as a DBA at another organization I have returned to my previous employer to take on a new and exciting role as a Database Administrator in a large SaaS environment. This environment has customers and data centers all over the wold and will certainly present some new challenges. It’s no secret that IT as a whole is trending toward cloud architecture and I’m excited to be right in the thick of it.

I’m also excited to announce that I will be presenting my session “Troubleshooting SQL Server Performance Using Wait Stats” at the Ohio North SQL Server User Group on January 6 and then again at SQLSaturday #357 – Cleveland on February 7. These events will be my first speaking engagements and I am definitely looking forward to them.

I have again become quiet on this blog as the last few months have seen two career moves that have kept me busy. Now that I have started to settle in I hope to increase my posting frequency. My new role should provide me with plenty to share!

Meet the New and Improved MCSA Certification

When I was working through my MCSA certification the least enjoyable part, for me, was the 463 exam (Implementing a Data Warehouse with Microsoft SQL Server 2012). I wasn’t really a fan for a number of reasons. It was the least relevant to my role at the time and it felt like portions of the exam were less about practical knowledge and more about promoting those technologies. Still, being a nerd I enjoyed the challenge of learning something new.

On Monday, Microsoft announced that there will be changes to the current exam structure. The 463 exam is no longer a requirement to receive the certification. The 461 (Querying Microsoft SQL Server 2012) and 462 (Administering Microsoft SQL Server 2012 Databases) exams are still required, but now you have four choices for your third exam. Those choices include the 463 exam, 411 (Administering Windows Server 2012), 412 (Configuring Advanced Windows Server 2012 Services), and 483 (Programming in C#). This gives more flexibility to those like myself whose interests aren’t really on the BI side of things. I would have loved spending more time learning Windows Server or resurrecting my C# skills.

I think this change will allow the certification to appeal to a wider range of SQL Server professionals which is a win for everyone. Well done, Microsoft.



My first post on this blog detailed a scenario where a read uncommitted select statement could ultimately block an insert/update/delete. In this scenario, a long running read uncommitted select is executed requiring a schema stability lock. That lock prevented the online rebuild from grabbing the schema modification lock necessary and caused the update statement to get queued up behind it.

SQL Server 2014 introduced an option that will allow more control over how online rebuilds behave in a scenario such as the one I described. The WAIT_AT_LOW_PRIORITY option gives you a few different choices in dealing with blocking scenarios. The syntax, from Books Online, is below.
Continue reading

Breaking Radio Silence

Well it has been a few months since I have posted here but it’s time for me to share an update. I recently accepted a new position as a SQL Server DBA and I am excited to continue moving forward in my career. My previous role doing database support for a software vendor provided me with a great deal of experience working in both SQL Server and Oracle environments across many industries. In my new position I will get to experience taking ownership of an environment of my own and facing all the challenges that come with that responsibility. I believe this move will allow me to become a more well rounded SQL Server professional and I am incredibly excited for the opportunity.

Between buying a house, planning a wedding, and accepting my new position I have been quite busy lately and that has resulted in me being pretty quiet on here. I aim to be more active on this blog and more active in the community once the chaos settles down.

Automatic Page Repair in Action

One of the cool features of Mirroring and Always On Availability Groups is Automatic Page Repair. With Mirroring or Availability Groups, when SQL Server encounters certain types of corruption it will look to the Mirror/Replicas to see if they have a clean copy of the page. If they do, it will repair the page in the Principal/Primary and make your life easy. Obviously any occurrence of corruption requires further investigation, but this is a handy feature where SQL Server can bail you out of certain scenarios. In this post I will step through an example of what happens when you corrupt a page in a normal database and then what happens when you corrupt the same page in a database that is part of an Availability Group.
Continue reading

Sort order without an ORDER BY

If you’ve worked with SQL Server for any length of time, you know that sort order is never guaranteed without an ORDER BY. I was recently asked why a query (without an ORDER BY) brings back results in alphabetical order in production while in test it returns them in the order they were inserted to the table. To explain this, I showed a quick example that I thought I would share.
Continue reading

Errors stating the 8060 bytes per row limit has been exceeded when sum of columns is well under 8060 bytes

Awhile back I worked on an issue where a client reached the 8060 byte limit for a row in SQL Server. 8060 bytes is the max size a single row can be as that is the size of a page minus the header (this doesn’t include LOB data types as those are handled differently). They were using a software functionality that adds and removes columns to the table as fields are added and removed within the software. The issue this particular client was seeing was that they had reached the limit when adding new fields (columns), but when they removed fields (dropped columns) to try to make room they still saw the error message.
Continue reading