May 242011

So I quit my job last week. As is the practice at most companies, I had to complete an exit interview. Since my former employer was rather geographically distributed and there were no human resources staff in my office, my exit interview was on paper instead of face-to-face. I liked this much better because I had more time to think through my answers instead of coming up with them on the spot.

The questions were pretty standard. Why are you leaving? What did you like best? What did you like least? What are your suggestions for improving this position in the future? Would you work here again? Nothing I wasn’t expecting, until I got to this one set:

Give us your comments about the pay for your job relative to:
– Employees in the same job here.
– Employees in other jobs here.
– Employees in the same job at other companies.

Exit SignThis threw me for a loop. I’ve always considered it to be in poor taste to discuss pay with co-workers, so I’ve never brought it up. Similarly I’ve never had anyone initiate such a conversation with me. Pay has always seemed like a taboo subject, and yet the questions asked were worded as if they assumed I knew what my co-workers were making.

Perhaps the only question of the three I really have access to an answer for is the final one, as there are plenty of websites that aggregate pay information based on job title, location, and experience. Paul Randal (blog | @PaulRandal) recently posted the results of a survey that offered an idea of what one should expect to be earning. My best guess about why they might have asked that question is that people tend to leave due to their pay (or lack thereof).

If anyone has thoughts on the subject of discussing pay in the workplace or similar exit interview questions, I’d love to hear from you! As for why I left and where I’m headed, I’ll have a few posts on those topics in the coming weeks.

May 202011

Two weeks ago I had the pleasure of attending the SQLskills Immersion Event on Internals and Performance taught by Paul Randal (blog | @PaulRandal) and Kimberly L. Tripp (blog | @KimberlyLTripp). I had been wanting to attend one of these for quite some time, and when it was announced they would be coming to the Chicago area I knew I couldn’t pass it up.

The Class


This is my brain

My goal for the week was simple – become a sponge! I knew Paul and Kimberly would have a tremendous amount of knowledge to share and I was determined to make the most of it.

I didn’t do a head count, but I’d say the class had around 30 students in it. There was a pretty wide geographic distribution – people from several states and a few different countries as well. The sessions were highly interactive and we were free to raise our hands and ask questions at any time – even about topics that weren’t on the agenda. There was also plenty of time during breaks and in the evenings to ask more in-depth questions and get advice from Kimberly and Paul. You just can’t beat that!

The Material

I think the best way to describe the amount of material presented would be “a firehose”. Really. There’s a ton of material covered in a short amount of time, so the class moves forward at a very rapid pace. There’s always time for questions, but this is definitely not SQL Server 101. We went around the room at the beginning of class and pretty much everyone had several years of experience.

One of the handouts was a complete set of lecture slides. Typically I roll my eyes when a presenter hands out a copy of all their slides, but here it was very necessary and helpful. First of all, their slides are very useful and descriptive. They’re chock full of information, instead of being the standard 3 to 4 bullet points with one sentence each. Having 60-100 words per slide was definitely not out of the question. Second, having a copy of all the slides meant that I could concentrate my note taking on things they said that weren’t on the slides. Being as knowledgeable and experienced as they are, Kimberly and Paul have plenty of stories and anecdotes to share, so those are the kind of things I typed my notes on. I ended up with about 5,000 words of notes per day!

As I said before, this is in no way a “passive” class. Sitting back and letting your eyes glaze over while looking at the PowerPoint screen will get you nowhere except lost very quickly. Luckily Paul and Kimberly make it easy to keep your attention focused where it should be. Their fun and energetic style makes it hard not to stay spellbound. This was definitely an environment where the more you put in, the more you’ll get out.

The Instructors

Paul and Kimberly are in a league all their own, which is one of the reasons I wanted to attend their immersion event so badly. They certainly did not disappoint, either. While they kept the class moving, they also did an excellent job of explaining material and answering any questions us attendees could come up with. They also engage in some wonderful banter that could probably be seen as harassment at times if they weren’t husband and wife!

Food & Fun


This is my brain on SQLskills!

Let’s face it, nerds love food, and there certainly was plenty go to around! There was a hot breakfast each morning with a spread containing roasted potatoes, bacon, sausage, scrambled eggs, pancakes or french toast in addition to cereals, yogurt, and pastries. Lunch was equally excellent. There was also a snack break in the afternoon each day, and a selection of beverages available all day to keep everyone nice and caffeinated.

There were also some great evening events designed to give the attendees and instructors a chance to get to know each other better. Monday night we all met at the hotel bar for a few hours of socializing. I’m not ashamed to admit I was a bit starstruck at first. “Wow, I’m having a beer with Paul Randal and Kimberly Tripp!” Some of the locals were kind enough to take the out-of-towners on a trip to Portillo’s to introduce them to real Chicago food!

Tuesday evening, Paul and Kimberly invited both the downtown and suburban chapters of PASS to join us. They started off with a Q&A session for any questions the audience could come up with, and then handed things over to Steve Wright (blog | @SQL_Steve) from SQL Sentry, who gave a great demo of their free Plan Explorer product.

Wednesday we were treated to a presentation by Andy Leonard (blog | @AndyLeonard) who was speaking at the Microsoft office in nearby Downers Grove.

Thursday night was mini-session night, where appetizers were ordered and attendees were invited to give 20 minute presentations on whatever they wanted. Afterwards we again met up in the hotel bar for more socializing.

Friday there was more good times at the hotel bar before everyone went their separate ways. I unfortunately had to leave early that evening as I had other obligations, but I can only imagine that another excellent time was had by all.

Would I go again?

Absolutely – in fact I can’t wait! This week was the first of a four-part series and I very much hope to attend the others. This course was everything I expected it to be learning-wise and an excellent time as well. If you’re ever looking for advanced SQL Server training, I highly recommend SQLskills Immersion Events!

May 132011

Quick thought: I first posted to this blog a year ago today. Since then there have been 62 more posts, hundreds of comments and some readership numbers I’m proud of. My sincere thanks to all of you who have stopped by to read or have offered support here or on Twitter. I love the SQL Server community!

This year I decided to take the plunge and submit my session on backups & recovery for the PASS Summit. Here’s the abstract:

Baby got Backup (and Restore): an In-depth Look
BACKUP and RESTORE are the most important commands for DBAs, and you don’t want to learn them under fire. In just one hour, we’ll take a detailed look at how they work, and show options you can’t get in Management Studio. We’ll also cover why you don’t have the same capabilities in all recovery models. Once armed with this knowledge, you’ll understand best practices for backup strategies, testing restores, and saving your job.

Big Electrical PlugI built this session to address the crowd that understands the basics of backup and restore but now desires to expand on that knowledge. I’ve had great success delivering this at user group meetings and most recently at SQL Saturday in Chicago. Some slight re-tooling for the Summit seems like the next logical step.

This year, PASS is asking for some help from the community with selecting sessions for the Summit. Registered members can mark sessions as “preferred”, the counts of which will apparently be taken into consideration when building the conference schedule. If you haven’t already preferred some sessions, you can do so here. There’s hundreds of amazing abstracts to choose from. If you think mine sounds nifty, I’d really appreciate your vote!

May 112011

T-SQL Tuesday LogoA great big thanks to all who contributed posts to T-SQL Tuesday #18! There were 23 posts in all and they covered a wide variety of tips and tricks that can be done with CTEs! If you’re looking to learn a ton, read through all the awesome content below! Without any further ado, here’s a quick look at what everyone wrote:

Matt Whitfield (blog | @atlantis_uk) – Matt explains recursive CTEs and uses them to query a permission hierarchy.

Rob Farley (blog) – Rob has some great thoughts on how CTEs fit in with other types of table expressions, and laments the non-existence of temporary views.

Naomi Nosonovsky (blog) – Naomi submitted a previous post that gives several examples of simplifying queries using CTEs and also has links to some great resources.

Pinal Dave (blog | @pinaldave) – Pinal was thinking back to SQL 2005 when CTEs were first introduced and listed some observations and links to other resources about them.

Bradley Ball (blog | @SQLBalls) – Bradley talks about how CTEs came in handy during a job interview for solving the infamous “Fizz Buzz” problem, and also shows us how they can be used to simplify a DMF query to gauge the scan & update patterns of indexes.

Thomas Rushton (blog | @ThomasRushton) – Thomas brings up an interesting point about how CTEs are executed each time they are referenced, which can lead to absurd execution plans and slow run times. He shows how CTEs can be used to populate temporary tables which can solve many of these problems.

Rich Brown (blog) – Rich has a great code sample showing how CTEs can be used to remove duplicates from a set. I’ve never tried deleting from a CTE before but apparently it is possible. Neat stuff!

Joe Casella (blog) – Joe went above and beyond and wrote two posts. The first compares CTEs to derived and temporary tables. The second uses a CTE to create a calendar table.

Steve Jones (blog | @way0utwest) – Steve shows us how CTEs can be used to find the TOP n values over a group without the need for any subquery nastiness.

Noel McKinney (blog | @NoelMcKinney) – Noel has an interesting example of how to use OPENROWSET within a CTE to keep your syntax legible, and I’m all for clean code!

Steven Ormrod (blog | @SQLAvenger) – Steven has some queries that use CTEs to provide administrative data, including info about the buffer pool and plan cache.

Amit Banerjee (blog | @banerjeeamit) – Amit has an in-depth example for using CTEs to parse out XML and even provides load times and hardware info to boot.

Jen McCown (blog | @JenniferMcCown) – Jen has offered up a previous post with a good list of N things to know about CTEs. She even gives an example of what happens when you don’t use a semicolon on the preceding statement.

Jes Borland (blog | @grrl_geek) – Jes challenged herself to learn recursive CTEs, find a use for one, and write a blog post. She did an excellent job and came up with this nifty post on how to build a dates table.

Simon (blog) – Simon came up with an example that demonstrates how a CTE can be used to return a dataset categorized by GROUP BY that also shows the result of TOP in the same query.

Nic Cain (blog | @anonythemouse) – Nic tells the tale of a job interview where he was asked to provide a solution to a problem using recursion, and he did so using CTEs. He was then told that wasn’t correct, so he provided two other much more verbose methods. I believe the first method should have been completely acceptable.

Robert L. Davis (blog | @SQLSoldier) – Robert shows us a nifty setup using CTEs to create date ranges in a pivot table and return everything nice and pretty in one fell swoop.

Brad Schulz (blog) – Brad gives several examples of features of CTEs that you may not know about, including a handy prank for unsuspecting co-workers!

Jason Brimhall (blog | @sqlrnnr) – Jason shared some scripts he’s posted previously that involve CTEs.

John Morehouse (blog | @sqlrus) – John has an interesting code sample demonstrating how he used a CTE to filter a result set.

Ricardo Leka (blog | @BigLeka) – Ricardo blogged a script using CTEs to aggregate wait stats. I don’t speak Portuguese, but I’m glad Google Translate does!

David Howard (blog | @daveh0ward) – Dave shows us how recursive CTEs can be used to perform an “ungroup” operation.

Robert Cook (blog | @sqlmashup) – Robert wrote up a script to generate a numbers table using CTEs.

Thanks again to everyone, and a special thank you to Adam Machanic (blog | @AdamMachanic) for starting the T-SQL Tuesday movement and allowing me to host this month. Stay tuned until next month when Allen Kinsel (blog | @sqlinsaneo) is hosting!