Aug 21 2014

Silliness for an Important Cause

I don’t mind saying that amyotrophic lateral sclerosis (ALS), also known as Lou Gehrig’s disease, scares me. A degenerative disease that takes away the minds ability to control the body, leaving the mind intact… words fail me. Add to that the fact that there is no known cure, and that there are at least 30,000 people suffering from this, just in the US, something has to be done. You can give money over at the ALS Association. Please do.

Oh, and Aaron Bertrand of SQL Sentry asked me to come over to his house to take part in the ice bucket challenge. Here are the results.

Please donate for this important cause.

If you see Kevin Kline, Steve Jones or Thomas LaRock, help them mix their ice bucket.

Aug 20 2014

The Red Gate Way…

SitCAs companies go, Red Gate is a little different. That is readily apparent in our tools and the philosophy behind them, ingeniously simple. But, we do a lot of other things too. There’s the Simple-Talk web site where we publish serious articles on all aspects of development and database administration across platforms and programming languages. There’s SQL Server Central, the single largest SQL Server community on the planet. There’s Ask SQL Server where you can get direct answers to your direct questions about SQL Server. If all that’s not enough, there are all the books, which we give away for free, on, again, all aspects of programming and database administration. But, we like to do more, so we also bring you training, the Red Gate way, at the SQL in the City events.

We’ve got two more SQL in the City events coming up soon. First, we’re back in London again on Friday, October 24, 2014. This event is one of my favorites, every year. We’re bringing in MVPs like Steve Jones, Ike Ellis, Brian Randell and others, all to teach you about SQL Server, but we’re doing it the Red Gate way. So please, register for this event. I’ll see you there and we can share a frothy beverage (it’s Red Gate).

Next, I’m thrilled to say that we’re going to be in Seattle on Monday, November 3, 2014. That’s right, just before the PASS Summit. If you wanted a reason to get out to Seattle early, here it is. We’re bringing a lot of the same crew from the London event over to Seattle. You’ll be able to experience what the London people did and more. This is SQL Server training done right, that is the Red Gate Way. Let’s get together and talk and share a frothy beverage in the States. It’s a free event, but there’s limited room, so please register now.

These are unique and popular events. We pull out all the stops to make them fun, special, educational, useful, helpful, doggone it, good. Please, come out, talk to me, talk to the Red Gate team, help influence the tools that you use every day, and learn about SQL Server.

Aug 19 2014

Getting the Word Out

A discussion that I’ve frequently had with organizers of SQL Saturday events, our own people here at Red Gate, authors, MVPs, pretty much anyone interested enough to listen for a few minutes, is summed up by “How do we get the word out about the opportunities that the SQL Server community offers?” The question always comes down to, how do we reach people? We tweet. There’s a Facebook page. Discussions are hosted on LinkedIn. Emails are sent out to various distribution lists. Advertising is done on SQL Server Central (with over one million registrants, what else do you have to do?). And yet, at events, I’ll ask, who has heard of PASS and will only get a 50% positive response. Heck, I’ll never forget that at the Charlotte SQL in the City event last fall, when I asked the audience, about 200 people, who was not aware that a few blocks away there were 3,000 people gathered to learn about SQL Server, about 1/3 of the audience did NOT know about the event occurring in their flipping back yard. In short, the communication means we’ve been using, don’t work. What to do? How do we reach those people who just aren’t getting the word?

Here’s a suggestion. Talk to people. No, not online. In person. Here’s a survey from an event, DevOpDays MSP, that asked people, how did you get here. The overwhelming answer is word of mouth. So, how do we get the word out? We need to talk to people. I know you’ve mentioned the community to your co-worker or your friend, but it’s time to do it again. Talk to them. Let them know about the upcoming SQL Saturday or user group meeting. Tell them about Connections and how great your learning opportunities are there. And, here’s the new wrinkle, ask them to pass the word on to some people that they know as well. Look at that survey. Over 50% get the good news by word of mouth. So let’s start leveraging that.

Aug 14 2014

A Full Day of Query Tuning

I’m excited to able to say that I’ve been given the opportunity to put on a full day workshop at SQL Connections on Friday, September 19th, 2014. The title is “Query Performance Tuning in SQL Server 2014″, but I assure you we’re going to cover things that are applicable if you’re still working on SQL Server 2005. We’ll start the day covering the different mechanisms you have to capture query metrics. We’ll go over dynamic management objects and extended events that are incredibly important to you in understanding which queries you need to tune. We’ll get an introduction into how the optimizer works and the importance that statistics, indexes and constraints play in helping the optimizer make the choices it makes. I promise, execution plans will be covered throughout the day, in great detail, because they are a fundamental part of how you’re going to understand the choices the optimizer made. Then, we’re going to go through common problems, how you can identify them, troubleshoot them, and solve them. We’ll get rid of a lot of myths and just easily fixed issues. Throughout the day we’ll be covering both older versions of SQL Server as well as SQL Server 2014. Then, to finish out the day, we’ll go over some of the new opportunities that are unique to SQL Server 2014, their use and their shortcomings.

In short, I’m trying to take you from not knowing which queries you need to tune, to identifying those problematic queries, understanding what the problems are and how to solve them. You’re going to know where to go to get started reading execution plans. You’re going to walk away with a love and fascination for extended events. You’re going to get tools and methods that you can apply to your own code, your own applications, your own servers. And, this all takes place after an amazing week of learning at the IT/Dev Connections event in Vegas. Please click here now to register.

Aug 06 2014

Say Thank You

I was approached by a man at SQL Bits who only wanted to thank me for blogging. He said, “I know you probably never hear from anyone, but you should. Thanks for what you do.” I’m not mentioning his name because he promised me he’d write an editorial for publication, so I’m going to wait on him to get that done so he gets full credit then, not on my silly blog post.

But, the idea stuck with me.

I realized, that I don’t do it. Oh yeah, I have an “Interesting Reading” set of links that I post to Twitter, Facebook and Linkedin. Sharing is “thanking” in our modern vernacular, right? No, of course not. It’s not the same. I really do appreciate the help that I get on the internet. Some of you are youngsters and don’t remember what it was like before the World Wide Web, even before America Online, before CompuServe, before the Bulletin Board Systems. We used to have to learn everything from books. EVERYTHING. We either knew someone who knew answers, or we suffered in ignorance. We walked to school and back home through 8 feet of snow, uphill, both ways… wait, where was I? Seriously, we have it good today. Better still, the SQL Server community is awesome for it’s sharing (oversharing even). There is almost limitless, free, good, information out there. The people who are generating it deserve your thanks.

So, if you read a blog post, and it was useful, take the time to post a quick thank you. Just do it.

For myself, I’m trying to think of a new blog series for thanking people.

In the mean time, real fast, in no order, no links, but very serious and heartfelt thanks to:

Kalen, Paul, Itzik, Brent, Tom, Tim, Adam, Wes, Benjamin, Kim, Don, Denny, Allan, Allen, Erin, Steve, Andy, Karen, Gail, Johnathan, and a bunch of people I’m not thinking of at the moment.

I’ve learned so much from you guys, for free. You’ve made a positive impact in my career. Thank you. I promise to try to do more to show that appreciation in the future.

Aug 01 2014

Speaker of the Month: August 2014

Speaker of the Month is now officially one year old.

I went back and reread my first post. The goals were for a relentlessly positive experience. Reading back through the twelve posts, I feel like I hit that mark pretty well. Yes, I’ve always pointed out places where improvements can be made, but I think I’ve done it in a constructive and positive manner. Plus, I’m picking your session (if you get picked), as the best session that I saw that month, which is pretty darned positive in and of itself. I also promised it would be random and arbitrary. Mission accomplished.

I’ve considered wrapping this up. I did it for a year, just to see what the response would be. I didn’t have much more of a goal in mind than trying to help out both attendees and speakers by pointing out what I thought were some awesome sessions. Maybe pointing out some places where people could improve would be helpful. Since I’ve been blessed with getting to present a lot, the implication is, I know what I’m doing and maybe I could share some of that knowledge with others. Done. Does it really need to continue? The feedback you get on most blogs and most blog posts is largely a null set. You toss the information out there, it sinks into the pond, the ripples quickly fade. You don’t have a clue if the blog and the posts are helping or not. I’ve received some feedback on this, but, it’s actually been mixed. I’ve had people tell me because I’m pointing out areas of improvement that I’m not being positive, that I’m in fact being mean. Which… I really don’t know where to go on that. If I just say, “It’s awesome” and walk away, is this useful? Is it helpful? Is it constructive? Will it make a positive difference to the person I’m praising? Heck, will it do anything for anyone except the person I’m praising? I’d say no.

I’m going to go with the thought that this matters, even if it is only to the people who get picked. But I think that hearing from someone, anyone, what works in a session and what doesn’t could be useful to those who are just getting started. So, assuming it makes a small, positive, difference, I’ll keep the Speaker of the Month award going for one more year.

Speaker of the Month for August 2014 is someone I just recently had the chance to meet. We had exchanged a number of emails on a topic that I knew nothing about, so I was utterly unhelpful to them. But, by explaining the problem to me, they figured out their own solution, and then turned that into a presentation. Wow! That alone is amazing. Then I saw the presentation and was blown away. My Speaker of the Month is Derek Stanley and his presentation Remove the Linked Server 2 Hop Limitation by Implementing Kerberos from SQL Saturday #302, Albany.

This is absolutely not a topic I’m familiar with or good at. I know I’ve run into the situation a couple of times. Explanations for exactly what was happening kind of pinged off my head. After sitting through Derek’s session, I have a better understanding of the problem and, I have a bunch of great solutions (that I couldn’t implement if you threatened me with torture, I just don’t know systems that well). Derek presented everything in a very clear fashion. He walked us through the problem space so we could understand what it was he was fixing, then he walked us through a bunch of different solutions. His explanations were good, but his demos really made the presentation shine. They were great. Demos can frequently be summed up as “look, I can make this work” but they don’t always teach. Derek’s were so clear and pointed that even I could understand how his solutions were working (still couldn’t replicate them). He put the presentation together really well, told a clear, concise, useful story in a way that made it easy to understand. The presentation was absolutely a win.

Areas I’d like to see improved are fairly slim. I think, my opinion, the slides were too wordy.  I get the “slides are documentation” school of thought. I just don’t agree with it. That one may be a throwaway. The one area that sometimes got a little confusing was caused by naming the servers VM1, VM2, etc. I think some clearer names that somehow help illustrate the points might help the demos along some. One more word: Zoomit.

In short, it was a good presentation with great demos. If you get the chance to see this one, I strongly recommend it. Derek, submit this to more events. If you’re organizing an event, accept this session. It’s good, you’ll be happy.

Derek, get a blog. Here are some articles he wrote for SQL Server Central. Here’s his LinkedIn profile.

Jul 23 2014

Challenge Accepted

There seemed to be some question whether my comfort level with my own masculinity would prevent me from wearing these:

Fluffy

Oh please! Couldn’t we be a little more challenging? Anyway, here’s the deal, you donate to a good cause, Doctors Without Borders. We hit 10K and I’ll sport those lovely rainbow whatever-they-are at the PASS Summit 2014. Sound good?

I’ll go one better. You double the goal, make it hit 20K, and I’ll present my session while wearing the rainbow whosimawatchits. BOOM!

BRING-IT

Jul 21 2014

Victims of Success

I took part in the PASS Summit 2014 selection committee this year because I was really curious about seeing how the sausage gets made. I’ve seen how actual sausage gets made and I still eat sausage.  Despite a few hiccups and communication issues, internal and external, I think the selection process for the Summit went really well this year. But, there was still some controversy. Being a naturally pushy person, I got involved in the controversy, for good or ill, and subsequently have had conversations with many people about the selection process (which, reiterating, I think went extremely well overall). But, the one thing that kept coming up over and over was a simple question:

How come I/PersonX didn’t get picked?

The easy answer is because you/PersonX had a horrible abstract. But you know what, in probably most cases, that’s not true. Good abstracts by good people didn’t get selected, so what the heck? I think the more complex answer does not go back to the selection committee or the selection criteria or the selection process. Do I think some improvements are possible there? Yes, and I’m putting my foot where my mouth is (or something) and joining the committees to try to make some tweaks to the system to make it better (and really, we need tweaks, I want to repeat, risking ad naseum, the process went well and worked great and I’m happy I took part and I think the outcome is pretty darned good). No, the real problem lies elsewhere, SQL Saturdays.

I’m not saying SQL Saturdays are themselves a problem. What I’m saying is that PASS took on the whole SQL Saturday concept for several reasons, one of which was for it to act as a farm team for speakers. This will be my 10th Summit. Looking back to 10 years ago, while I really loved the event, oh good god have the speakers improved. I remember sitting in sessions with people who were mumbling through their presentations so much that, even with a microphone, you couldn’t hear half of what they said. Slide decks that consisted of 8-12 pages of text (yes, worse than Paul Randal’s slides, kidding, don’t hit me Paul). Speakers who really, clearly, didn’t have a clue what they were talking about. It was kind of rocky back then. I learned my second year that you had to talk to people to find out, not just which sessions sounded good, but which speakers were going to present those sessions well enough that it would be worthwhile. Why were there so many weak presenters? Well, because there was almost nothing between speaking at local user groups and speaking at Summit (I made the leap that way). There were a few code camps around, a couple of other major events, various schools and technical courses, and Summit. I don’t know how the old abstract/speaker review process worked (and I apologize to whoever read my first abstract because I know now just how horrific it was and I’m so sorry I wasted your time), but I’m pretty sure they were desperate to get enough submissions that sounded coherent with a speaker attached that probably could get the job done. Not any more.

Now, people are getting lots of opportunities to present at SQL Saturday events all over the world. And it’s working. We’re growing speakers. We’re growing good speakers. Don’t believe me? Then you go to two or three events in a month, sit through 8-12 sessions, mostly by newer people, not Brent Ozar, not Denny Cherry, not Kim Tripp, and you review them, each, individually, then go back and try to pick the best one. Oh yeah, there’s going to be a few dogs in the bunch, but overall, you’re going to find a great bunch of presentations by a great bunch of speakers. Our farm system is working and working well. But there’s a catch.

Because we have upped the bar pretty radically on all the introductory level speakers (and if you’re thinking about presenting, don’t let that slow you down, everyone starts at zero and goes up), that means the competition at the top (and yes, I do consider the Summit the top in many ways, not all, see SQLBits) is becoming and more and more fierce. That means, my abstracts probably need quite a bit more polish than they’re getting (and so do yours) because there are a whole slew of speakers coming up that are writing killer abstracts. That means I need to really be concerned about the evaluations (despite the fact that I get dinged because the stage is low, the room is hot/cold, lunch didn’t have good vegetarian choices, England left the Cup early, all outside my control) because there are new speakers that are knocking it out of the park. In short, you/I/PersonX didn’t get picked because the competition has heated up in a major way.

In short, a sub-section of the community, defined by those who wish to speak, are victims of the success of the farm team system as represented by SQL Saturday. On the one hand, that sucks because I now need to work harder than ever on my abstracts, on the other, we’re going to see very few instances of really bad presentations at Summit. We’ve improved the brand and the community. It’s a good thing.

Jul 15 2014

Execution Plan Details

I wouldn’t say it’s common knowledge that you should look at execution plans when tuning queries, but it’s not exactly uncommon knowledge either. But, people tend to get focused on just looking at the graphical part of the plan and there’s just not enough information there. Let’s take a look at a query:

SELECT  pc.Name,
        ps.Name,
        v.Name,
        pr.ReviewerName,
        p.Name,
        v.ModifiedDate,
        p.Color
FROM    Production.Product AS p
        LEFT JOIN Production.ProductReview AS pr
        ON pr.ProductID = p.ProductID
        JOIN Production.ProductSubcategory AS ps
        ON p.ProductSubcategoryID = ps.ProductSubcategoryID
        JOIN Production.ProductCategory AS pc
        ON pc.ProductCategoryID = ps.ProductCategoryID
        JOIN Purchasing.ProductVendor AS pv
        JOIN Purchasing.Vendor AS v
        ON v.BusinessEntityID = pv.BusinessEntityID
        ON pv.ProductID = p.ProductID
WHERE   v.ModifiedDate = '2006-02-17 00:00:00.000'
AND p.Color LIKE 'Y%';

This generates an execution plan that looks like this:

PlanDetails

Neither v.ModifiedDate nor p.Color have indexes. Yet, we only see a single scan in this plan, on the BusinessEntity.Vendor table. Why? Well, we can’t tell from the GUI directly, so, you have to look to the tool tips or the properties. The tool tip in this case actually proves helpful, as does the properties:

PlanDetailsProperties

In short, the clustered index is used to seek out a number of rows and then a secondary predicate is placed on those few rows to further filter the results. You would never even guess at that using just the GUI alone. You have to look to the details of the execution plan to understand that. There are lots of other examples where you can only get the information from the properties because not everything is available in the tooltip. This can include things like Optimization Level, Reason For Early Termination, Scan Direction, and a bunch of other things. Just remember to drill down to the properties in order to better understand your execution plans.

Why do you need information like this? Are we going to tune this query? Maybe we could help it by adding an index t the Vendor table. But, at least for this query with this date range, it appears we don’t need an index on the Product table. But, that may change depending on the number of rows returned from the Vendor table. A different data set can result in an entirely different execution plan with entirely different performance characteristics.

Query tuning is tough. That’s why I’ve put together a one-day seminar to get you started on it. There’s still room in Albany, on July 25th. You can register here. I’ll also be teaching at SQL Connections in September in Las Vegas. Go here to register for this great event. In Belgium in October, I’ll be doing an all day session on just execution plans at SQL Server Days. Go here to register for this event. When I did a similar session at the PASS Summit two years ago, it sold out. I’ll be presenting at Summit this year in Seattle in November. Go here to register. But do it early or you may be put on a waiting list.

 

 

 

 

Jul 11 2014

Speaker of the Month, July 2014

Another month another bunch of great presentations. I almost don’t want to do this any more. It’s hard. I sit through a presentation and I think, “Well, here’s the winner this month.” Then I go to another presentation and I think, “Well, fudge, now one of these people loses.” Then I go to a third and I’m simply blown away. And now I have to pick. Well, it’s hard. So let me do this, I’m going to declare two winners this month, but only review one of them. Hey, my blog, my rules.

First, I want to award speaker of the month for July 2014 to Wayne Sheffield(b|t) and his presentation Table Variables and Temp Tables that I saw at SQL Saturday 294.

What’s my measure? That I learned stuff and was entertained. Well, I pretty much guarantee, unless you too are an MCM, and none of you can ever become one, ever again, you’ll probably learn something from Wayne too. This was a great presentation. I liked the way he started off with a “What do you think” set of slides to kind of get the audience primed for the material that was coming. It was a good approach, much better in a lot of ways than simply giving an agenda. And the information, scads of it, just flowed out of the presentation. I picked up a number of things that I didn’t know about some of the innards of cardinality estimates on table variables (during recompiles). The demos were absolute perfection. They did an excellent job of making the points in an extremely clear manner. And Wayne told a joke that I immediately stole (sorry Wayne, it was that good), the very next week while presenting (I did give you attribution, afterwards). In short, informative, structured, educational, entertaining, a great presentation.

There were a few issues that Wayne and I talked about. He has too much information to give out in one hour. Because of this, Wayne tends to not stop or pause to ensure the audience got his point and just moves on. It’s frankly a mixed bag on this. I think he ought to pause to ensure people are understanding his concepts (because they’re great), but he has a lot to present, so he can’t waste a lot of time (because his stuff is great). Tough conundrum, but I’d suggest going with trimming some material and ensuring full understanding, but that’s one that people can honestly disagree on. While when he tells a joke, it’s funny, the overall presentation style was just a little dry and slightly monotone. I think that’s just a question of a little practice more than anything. Maybe chatting up the crowd before you start to loosen yourself up will help.

That’s it. It was a great presentation with tons and tons of wonderful information. I’m quite happy I attended it. You should track it down too.

Second, and not second place, just my other awardee of the month, Louis Davidson(b|t)  simply blew my socks off with his presentation on Database Design Fundamentals at SQL Saturday 286. Louis is an MVP, author and frequent presenter, and oh my god, now I know why. It’s like a switch flips and Louis, who is a pretty quiet and unassuming guy, turns into SUPER-PRESENTER! And a tsunami wall of information comes hurtling at you along with quips and experience and stories. It was one of the single great presentations I’ve seen in, well, forever. So if I didn’t bring up that fact here on the blog, I’d be doing him an utter disservice. But… my blog, my rules, he’s so good, I didn’t want to just hand him the title and be done. It wouldn’t be fair to all the other amazing presentations I saw that they were upstaged by a consummate professional like Louis.

Please people, help me out, do really horrible presentations, at least some of the time, so I don’t have to actually think about this stuff. I’m lazy and you’re making me work.