Quick Speaking Event Roundup

Wow… so much on the radar right now.

This Saturday, I’ll be speaking at SQL Saturday Rochester. I’ll be giving two sessions. First, The Usual SUSPECTs which covers some of the states that a database can be in other than “online”. Second, DBA 911 – Database Corruption, which covers on-disk data corruption and repair techniques. I’m really looking forward to it, and hope to see many of you there.

Next month on June 6th, I’ll be speaking at SQL Saturday Philadelphia, giving my DBA 911 – Database Corruption session. That session has certainly been popular. I think I’ve presented it about a dozen times. :-) Both Rochester and Philadelphia are new cities for me, and I’m really looking forward to enjoying my visits.

I’m also excited to say that I’ve been selected to speak for this summer’s 24 Hours of Pass. This is a great event, and the lineup of speakers is awesome. I’m grateful to be included in such a group. I’ll be presenting my latest session, Turbo-Charged Transaction Logs, on transaction log internals and performance. I encourage you to register, and look forward to ‘seeing’ you there.

Last, but most definitely not least, SQL Saturday Columbus is coming up on July 11. We just extended the speaker submission deadline through the weekend for those of you who still have to submit sessions. Please do so; we’d love to hear what you have to say.

Thanks for reading, and I hope to catch up with you at one of these events, or another.



Why you should speak or volunteer at SQL Saturday Columbus.

“Hi. My name is David, and I’m a SQL Saturday addict.”

“Hi, David…”

If you’ve been following my posts, you’ll no doubt have noticed I’ve spent a good bit of time on talking about SQL Saturdays on here recently. SQL Saturday is a big deal for me. No – scratch that – it’s an all caps BIG DEAL. Why? If for no other reason then it’s the number one thing that has contributed to my career over the last five years.

Let’s break that down, shall we?

1. People. This is the number one reason to attend a SQL Saturday, period. The people you will find at these events are amazing. Not only have I made many valuable professional contacts, I have made some life-long friends as well. At how many professional events can you say that? Also, consider this: How many times in your life can you remember being in a room with a couple dozen people, and being able to explain what you do in five words or less… and everyone *gets it*.  Rare, right? Not at SQL Saturday. Here, you are one of us.

2. Knowledge. Tons of it. Everywhere. Not just in the session rooms, either. Conversations in the hall, during breakfast or lunch, even after the event… There’s a ton of knowledge being shared on just about any aspect of SQL Server that you can think of. The learning opportunities are limitless. I’ve learned more than I thought I would just by talking to people outside of the sessions. That issue you’ve been dealing with at work and can’t seem to find a good solution to? There’s a good chance the person sitting next to you has seen that as well. Maybe you should ask them about it?

3. Community. This could easily have fallen under ‘people’ but I wanted to give it its own separate space. A community is much, much more than just a collection of people. Remember that the people who put on this event are volunteers. This includes the speakers. They don’t get paid for putting on these events, they simply do it because they love it. And when I say they love ‘it’ I don’t mean SQL Server, but the community of professionals that make it better, faster, more powerful, and more valuable to the businesses and organizations that use it. Giving back to that community is kind of like a feedback loop. The more we put into it, the more we get out of it, and the better it gets.

That brings me to the point of this post. I want you – yes YOU – to consider submitting a session for SQL Saturday Columbus. Speaker selection is open until May 15. Have you given talks at work, or maybe for a local user group? Perfect – you’d be an excellent candidate. Need help with the submission process or coming up with your abstract? No problem – contact me via my contact page and I’ll help you out!

And if you’re not interested in speaking, then maybe volunteering is for you. We’ve got all kinds of things that need to be set up, taken down, monitored, moved, and generally managed the day of the event. We need all kinds of people to do it, as well. Volunteers are what make these events run, and make the community great. If you would like to volunteer, you can sign up on the SQL Saturday site, or simply contact me.

I hope to see you there.

Thanks for reading.



SQL Saturday Madison – Recap and Speaker Feedback

First things first: THANK YOU to the organizers, volunteers, speakers and sponsors for putting on yet another amazing SQL Saturday in Madison WI. I had a fantastic time, as I expected. Well done all around.

I attended some excellent sessions that day. I particularly want to call out Andy Yun (B | T) for an excellent session on SQL Server Data Types. I got a couple of ideas from attending his session that I want to add to my own presentation. Andy did a great job illustrating the advantages of selecting the right data types for the data you have, and more importantly, what you want to do with it. I was even able to use some of his points in discussions at work already.

One of the things I really like is the feedback I get from my sessions. I’m consistently surprised how many people show up to my sessions in the first place. This time, I got some fantastic feedback this time, from some obviously experienced people. I’m going to condense and respond to some of that here.

“Work on not talking to the monitor during demos.”  Yeah, I have a problem with this. Will do!

“Explain named transactions more.” Got it. I think I mention naming a transaction in passing, but I don’t really explain what a named transaction is. I’ll add a bit about that.

“Do ‘Who Am I?’ first. Disjointed transition between goals and self.”  Good point. Thanks!

“Explain how log backups affect the tran log and the difference between simple and full recovery models.” Ok, time for me to confess something. For some reason I don’t remember, I thought this was supposed to be a 60 minute session instead of a 75 minute session. So I had cut a couple things out, and one of them happened to be an explanation of log behavior in the various recovery modes. I should have had that handy and put it back in. I will be adding it back to the session soon.

“Add some visual drawings in the slides explaining VLF reuse and the circular use of the transaction log.” Yep – this was another thing I cut for time. Also, I wasn’t happy with how my initial iteration of that came out, and planned to re-do it anyway. Plus, I thought it made more sense the way it looked in the demo. So yes, this will be back.

“Light green font was hard to read from the back.” I changed color schemes on this presentation about six times. Apparently, I didn’t pick a good one. :-)  I’ve already planned on changing that, as well.

So thanks to everyone who provided feedback to me. I really do take it seriously and consider it very valuable. Presentation materials are available on my resources page, linked at the top.

That’s that! See you in Rochester? :-)

Thanks for reading.


SQL Saturday Roundup – April 2015 Edition

This year is picking up nicely for events for me. After thoroughly enjoying SQL Saturday Nashville in January, and SQL Saturday Cleveland in February, I’m really looking forward to my next few SQL-related trips. I’ve updated my schedule page accordingly, but wanted to call out the next couple of events I’m going to be at. If anyone in those areas, or travelling to them for the events, wants to get together and chat, please let me know.

April 11 – SQL Saturday – Madison WI

I’ll be heading to SQL Saturday Madison for the second year in a row, and I’m very excited for a couple of reasons. First, I’ll be presenting my brand new session, “Turbo-Charged Transaction Logs“. In that session, we’ll dig a little bit into the transaction log internals, show how SQL logs what it does, and some ways to make the logging process faster.  Second, and more importantly, I’m looking forward to spending time learning and relaxing with the fantastic people of the Madison SQL Server community. You’ve got a good crew up there, folks. Looking forward to seeing you all.

May 4 – 8: SQL Skills IE:PTO2 – Chicago IL

OK. This isn’t a SQL Saturday event, but I will be travelling to Chicago for a week to get schooled on SQL Server performance by one of the best companies in the business, SQL Skills. At some point, my brain is going to need a break so if you’re in the Chicago area and want to catch up, or just chat about SQL Server, drop me a line. I should have an evening or two free. :-)

May 16 – SQL Saturday – Rochester NY

This will be my first time speaking for SQL Saturday Rochester, and I’m stoked. The schedule hasn’t been finalized, but the approximate schedule is up, and if it sticks, I’ll be doing two sessions on disaster recovery, back to back. A whole afternoon block of breaking and fixing. Sounds like fun!

One session I’ll be presenting is: “The Usual SUSPECTs: When Good Databases Go Bad“.  This session is all about database states. The good, the bad, and the ugly, as it were. In addition to talking about things like moving OFFLINE database files and rolling a database forward through its transactions using a STANDBY restore, we’ll look at what happens when a SAN failure puts a database in to RECOVERY_PENDING, or when a disk crash lands you into SUSPECT mode. I’ll show you how to recover from those states in a safe way.

The other session I’ll be doing is “DBA 911 – Database Corruption“. In that session, we’ll look at the basic definitions and terms of database corruption and repair. We’ll talk about some of the different kinds of corruption, how to look for and troubleshoot corruption issues, and when it’s best to repair vs. restore. As in all things Disaster Recovery – preparation is key, so we’ll also cover steps you can take to ready yourself for a corruption problem. (Hint: have you hugged your backups today?)

Thanks for reading, and I hope to see you at one of these events.


Passing Exam 70-461 – Querying SQL Server 2012

tl;dr – Study. A lot. Hard.

I recently took and passed MS exam 70-461. Here are my reflections on it. I am, of course, forbidden to tell you exactly what’s on the test, and I don’t know what’s in the entire bank of questions, so this is more of a guideline than anything else. Your mileage may vary, as usual.

Study Materials

I had previously been through the official class with a local training company, as well has having studied the official MS Press book, which I got from the library. (If you’re buying the books just to pass the tests, you’re wasting money.) However, I didn’t take the test immediately after. I’m kind of glad I didn’t since we didn’t actually cover some of the most important things on the exam in the course material. I got my best results by using the MeasureUp practice exam, and reading the suggested BOL articles on MSDN. Between those two things, as well as mucking around with the code on my own, I feel like got enough of a review of the material and exposure to new stuff to be able to pass.

The MeasureUp practice test isn’t perfect – not by a long shot. I sent in at least three corrections on their test. The only time that actually caused me a problem was when I answered a question incorrectly, and was shown an answer in the “explanation” that wasn’t an available answer for the question. Once or twice, the “correct” code was just flat-out wrong. However, even that was close enough, and I already had enough experience with the concept to get what they were driving at. Also, it’s not exactly cheap, but not much more expensive than the book. I would get the book from the library and pay for a 30 day pass to the practice exam. Even with the minor issues I described, I would still recommend it as a study tool.

One more thing about the MeasureUp exam: It’s nowhere near like the actual test, no matter how much they say it is. It’s a great study tool, but a poor excuse for a simulation of the actual exam. Example: Most of the questions on the MeasureUp exam are multiple choice, with some drag and drop. On the official exam, you will be asked to actually write code. So don’t get used to just picking the correct code snippet out of the list. Know how the code works, and be able to actually write it. This is where practicing with the examples in a copy of Management Studio will come in handy.

Subject Matter

There are four sections to the test. I’ll take each one in turn and talk a little about the types of things I think you should practice. Now the way I describe these doesn’t exactly line up with the exam objectives, but I think this is a decent way to study them, since they make more sense to me in this grouping.

Create Database Objects – I did pretty well on this section. Know how to create tables to work with FILESTREAM, and brush up on the ins and outs of views. Pay particular attention to options required for indexed views like SCHEMABINDING, as well as what VIEW_METADATA and CHECK OPTION do. Finally, know how SEQUENCE objects work, and when they’re a good choice.

Troubleshoot and Optimize – I did moderately well on this. Here, I’d recommend knowing isolation levels really well. Also know what the various *physical* join types are, and when they are to be expected. Know how to get execution plan information from T-SQL, and how to optimize queries by doing things different ways. Many of the questions involved optimizing queries not by altering an existing function or CTE, but by taking a different approach all together.

Modify Data – This was my best section. Know the intricacies of MERGE, as well as INSERT/UPDATE/DELETE. Know what the set operators do, like UNION (ALL), INTERSECT and EXCEPT. Often, you’ll see those being used to filter a result set in a derived table, so keep in mind what their output should look like. I’d also recommend careful review of the details of creating stored procedures and functions. More so table valued functions than scalar ones, at least in my experience. COALESCE and IIF are important functions. Know those well.

Work With Data – I did poorest on this section. Caveat: I am not a developer, and rarely spend my time writing queries to work with business data. If I were to study for this section again, I would spend a lot more time on the FOR XML set of functions, things like GROUPING SETS and ranking functions like RANK vs DENSE_RANK. I would recommend reviewing data types very carefully. A few of the questions relied on some of the more intricate details of them. (i.e., there’s only one date/time type that stores time zone information, and you should know the precision levels of the various non-integer numeric types.) Also, I recommend reviewing some of the more obscure types like ‘cursor’.

Exam Generalizations

Most of passing a Microsoft exam is a matter of reading the questions extremely carefully, and understanding what they’re asking for. No lie: I spent the most amount of my time on the very first question, trying to decide what a particular word in the question meant. I definitely recommend marking questions, and returning to them later if they take you more than a few minutes or so to answer. There were 42 questions in 120 minutes on my exam. I completed the test in a little over an hour, but going back to that first question, and deciding what they really wanted as the result took the bulk of my time. Don’t worry about skipping questions – you’ll get the chance to come back and review anything you marked or skipped at the end of the exam. When in doubt, mark it and come back to it later. You’ll make up the time on the simpler, “gimme” questions, and there are quite a few of those as well.

Often, you can tell what the correct answer is just by the context clues in the question. i.e., You’re joining data from two tables, and you want a result set for the first table, regardless of whether or not there are matching rows in the second table… it’s a good bet the correct answer is going to have a LEFT JOIN in it, effectively eliminating answers with INNER JOIN in them quickly. Process of elimination is a perfectly valid way to take this exam. Use it.

Hope that helps.