Blog

What is Your Biggest Weakness?

Professional Development
15 Comments

David Stein (BlogTwitter) started a new game of blog tag by asking the classic interview question, “What is your biggest weakness?” I got a chuckle out of David’s answer – he loves to jump straight into code as soon as he hears the problem.  I’m right there with him on that one.

Me?  Only one – if I had any humility, I’d be perfect.

Okay, no, seriously, my biggest weakness is a mental hangup.  I only want to do things I can do better than anybody else very quickly.

I’m not giving you a sales pitch here.  I’m not trying to say, “I like to make sure I’m successful when I take on a project.”  That’s not it at all.  And I’m not saying I’m lazy, so you should hire me because I like to find the solution with the least amount of work involved.  I’m saying if I don’t think I can win often, I don’t want to bother playing.

In high school, I tried out for the tennis team.  I went to the first practice, left early, and never went back.  While I liked playing around with tennis, I didn’t like the thought of mindlessly training over and over and over in order to be the best.  I wouldn’t play if I was going to be a half-ass player, and I didn’t have the patience to train to be the one of the best players.  Piano, basketball, soccer, volleyball field hockey, you name it, I tried it and I wasn’t really interested.

The Only Player to Defeat Me
The Only Player to Defeat Me

Chess, on the other hand – I loved chess.  As long as I could think extremely fast, I could outplay the vast majority of my opponents.  Since I could beat most of the people around me, that made me more interested in playing stronger and stronger opponents, which ended up sharpening my skills.

I still take this same approach when I look at new technologies.  I’m not interested in learning SSAS, SSIS, or SSRS because without a whole lot of training and dedication, I’d just be one of the thousands of people who get the job done.  Nothing more, nothing less.  The skills I’ve accumulated over the years don’t really translate into making me an SSIS rocket surgeon like Andy Leonard.  On the other hand, when I had the chance to jump into SAN administration, I was all over it because it would make me a better DBA.  I didn’t know any other DBAs who’d also done SAN administration, so it would move me up a notch.

I’ve been lucky to find a career that works well for my strengths and weaknesses, but I don’t think the “production DBA” job will be around forever.  In the back of my mind, I’m already looking for my next career.  To give an extreme example, “social media expert” is the kind of job I could probably nail down easily with zero effort, but I can’t say that with a straight face, so it’s out of the question.

Time to tag a few other people: hey Andy Leonard, Jeremiah Peschka, Tim Ford, and Tom LaRock, what’s your biggest weakness?


Finding Buried Treasure with Google Analytics

17 Comments

About once a month, I use Google Analytics reports to find out if any posts are getting a lot of hits from search engines. In Analytics, I click Content, Top Landing Pages, which pulls up this report:

Top Landing Pages Report
Top Landing Pages Report

What the heck?  #5 is a joke post about SQL Server 2010’s features being leaked.  That surprises me, so next, I want to find out why users are searching for this information. I click on that page name, then click Entrance Keywords:

Entrance Keywords Report
Entrance Keywords Report

Innnteresting.  I never would have expected that this post would remain popular long after I wrote it, since it was pretty much a throwaway joke.  I bet you’ve got pages like this too – you casually wrote a blog post to address one specific issue, didn’t really think anything of it at the time, and now there’s hits coming that you didn’t expect.

Now that I know the post has gained popularity, I can make it even more successful.

Helping Search Engines Find Your Buried Treasure

We’re going to make a series of changes in order to improve our search engine rankings. Ideally, we’d be doing this legwork for every post we write, but we don’t usually have that much time, do we? After all, we’ve got day jobs.

First, edit the post’s keywords to include more of the keywords that users were searching for. This will make it rise higher in search engine rankings. If you’re using the excellent All-in-One SEO Plugin for WordPress, edit the post and scroll all the way to the bottom of the page. Fill in each of the All-in-One fields, which are empty by default:

All in One SEO Plugin for WordPress
All in One SEO Plugin for WordPress

The fields are:

  • Title – defaults to empty, which just uses the original blog post title. If you wrote a funny post title that doesn’t really match up to the content, you can override it here. This override only affects how the search engines see your content, so you can be less funny and more accurate here.
  • Keywords – use the search keywords end users used to find your page.
  • Description – a one or two sentence description of the page that will show up as a search engine summary. WordPress uses the first sentence of your blog by default, but you might want to write something more descriptive.  It’ll show up in the Google results like this:
Google Search Results with Tweaked Meta Tags
Google Search Results with Tweaked Meta Tags

Presto! A nice, clean summary sentence instead of the article’s first sentence.

To be even more effective, we can tweak our post content too. I break up every few paragraphs of my posts with a header line. This uses the H3 tag in WordPress. Search engines give more relevance to your headers, so if you want to optimize your post for search engines, try to work keywords into your header lines.

Don’t go overboard. Readers can tell when you’re being slimy. It can be a tough line to walk, but at the end of the day you have to decide whether you want to be liked by search engines or by human beings. This post is a great example – my header lines here all talk about buried treasure, which frankly isn’t going to get me any search engine traffic at all. I’m fine with that, because this post isn’t the cornerstone of my blog. This is just for you, dear reader, and I’ll drive traffic to it another way.

Helping People Find Your Buried Treasure

Do a search in your own blog looking for related posts. You’ve probably written at least a couple of entries that somehow relate back to your newly popular page. Edit those pages, and add links directing people to your treasure.

If it’s a post you’re really proud of, link to it from every single page in your site. On BrentOzar.com, I have a Popular Articles section on the side of my site. It links to several of my most searched-for posts, plus a few posts that I just happen to think are spiffy.

Making the Buried Treasure More Valuable

If people are going wild and crazy over one of your buried treasures, put some elbow grease into it and polish it up. Add pictures, add sample code, and add most importantly, add links. If someone took the time to click on your link in a search result, they’ve probably got a lot of questions. Add a section at the end of the post called Related Reading, and include your own links plus the best you’ve found on the web. If you don’t know any offhand, take a few minutes to search. If you knew enough about the subject to write about it, then you probably know enough to pick out some good links in search that the reader would like. After all, they came to you for help – they may not know the good stuff from the bad right now.

Consider expanding your post to include more information covering the keywords that people were searching for. Let’s say you wrote about truncating SQL Server log files, for example, and people have started searching for how to truncate the log in SQL Server 2008 – which is no longer supported. You could add a paragraph or section to the post explaining that BACKUP LOG WITH TRUNCATE_ONLY no longer works, and include a copy of the error message users get when they try that stunt.

This is how my epic Twitter RT FAQ post got started. Originally, it was just a short post explaining what RT meant on Twitter because people kept asking me. Over time, I added more and more questions and answers because they were showing up in the search logs, and next thing you know, I’ve got a monster post going. The drawback is that my regular readers don’t see these added entries on such an old blog post, but frankly, I don’t write that material for my regular readers. I just keep adding to that post in order to help people who keep searching for Twitter information.

Rather than adding more and more to old posts, you can also write new posts to cover new information, and build links between your existing pages and your new ones. This comes back to the Related Reading topic we discussed earlier.

Sometimes, I find that I end up writing my Related Reading posts first! I start working on a post, and I realize I need some supporting material. That’s exactly what this post is doing here – it’s going to be link in tomorrow’s post. Stay tuned!


Knowing the Relative Value of Databases

All databases are not created equal.

Over the last couple of years, IT management pressured database administrators to cut hardware costs and licensing costs.  We had a few choices:

  • Consolidation – take databases that used to live on separate SQL Server instances and merge them onto one
  • Instance stacking – install multiple SQL Server instances onto less operating systems
  • Virtualization – keep the SQL Server instances separate, but merge their OS’s onto less hosts by turning them into virtual servers

All of these have their pros and cons. The bottom line, though, is that all of them end up with multiple databases sharing less physical hardware.  The more databases we have on a server – whether virtual or physical – the more we have to monitor the resource utilization of each database.  SQL Server doesn’t know which databases are more valuable to the business, or if one database is supposed to be more active than other databases.

When Tuning, Look for Greedy Databases

When I start tuning a server with more than a handful of databases, I like running sp_BlitzFirst @SinceStartup = 1.  It lists each database file and the basic IO stats like number of reads & writes, size of reads & writes, and IO stalls.  I don’t look for specific thresholds, but rather an imbalance – is one database dominating the IO?

There's Your Problem
There’s Your Problem

If I see one database absolutely dwarfing the read/write statistics of other databases, I bring that to the attention of the server manager.  To drive the point home, I copy the query output into Excel and whip up a quick graph.  In the example shown here, one particular database was responsible for 88% of the reads on the server – more than all of the other >80 databases combined.

I’ve changed the database names to protect the innocent, but the one database was a enterprise-wide monitoring program’s repository (and no, it wasn’t a Quest product.)  While that database did have a legit business value, it didn’t justify draining the server’s resources.  In comparison, the Sales and SalesHistory databases (not really their names, but renamed for illustration) only used around 3% each.  Those two databases had a vastly higher business value, and they were suffering due to the monitoring application.

The IT team had done the right thing by consolidating databases down to less servers, and when they needed a home for the new monitoring software repository, they used a shared instance.  At first everything went fine, but over time the repository’s needs dwarfed even the mission-critical sales application.

The problem turned into more than just storage; since the monitoring app was doing a stunning amount of reads, it was pushing memory out of SQL Server’s buffers.  The page life expectancy metric – the length of time data stays in the buffer cache – was averaging under 10 seconds.  For reference, Microsoft recommends this metric be 180 seconds (3 minutes) or higher.  Clearly, we were running into a problem with this database.

So how do we mitigate it?  In my Perfmon & Profiler 101 presentation, I talk about defining “mitigations”, not fixes, because sometimes we can only afford to duct tape the problem.

Option 1: Fix the Database

Ideally, I’d pop the hood on the database, rework the indexing strategy, and help improve the performance of the queries.  However, this was a third-party application with a sealed hood – no query changes here.

We could build a list of recommended changes for the vendor, but you know how those vendors are.  They never listen to anybody, do they?  <sigh>  I know, I know.

Option 2: Move the Database to a Standalone Server

Since the database was a non-mission-critical app, we could build a new SQL Server – preferably a Standard Edition box (as opposed to the pricey Enterprise Edition box it was sharing) with cheap storage.  No matter how much money that we’d throw at the hardware, the application still wouldn’t perform well, so it wouldn’t make sense to buy an expensive box.

We could also move it to a new virtual server and use our hypervisor’s resource throttling to minimize the impact on other servers.  Some hypervisors can set a “max” amount for CPU, memory and storage throughput for a given virtual server.

Option 3: Move the Database to a New Instance

We could install a separate instance of SQL Server onto this existing server and set its max memory to just a couple of gigabytes.  That way, it would only penalize itself for bad performance.  We should also use a separate drive array for this database so that its IO performance wouldn’t take down other databases.

Unfortunately, since this server was on the SAN, this database’s IO would still be traveling over the same Host Bus Adapters (HBAs) that the other databases used to access their data.  Depending on the quantity of IO, this could still present a bottleneck.

Option 4: Throw Money at the Shared Server

We could upgrade the bejeezus out of the memory and storage used by the SQL Server.  This would speed up the monitoring application along with the other applications on the server.  However, since the monitoring app ran 24/7, the other apps would never really see the full benefit of the additional hardware.

Which Option is Right for You?

Making the right choice requires knowing the business value of the resource-intensive database.  If you don’t know what the database is used for, email your management with a copy of your pie chart and let them decide.

In this particular case, the client chose to move the database to its own server.  The results speak for themselves – the server did 93% less reads per second on the data drive, meaning less IO saturation:

Google Chart

And page life expectancy, the length of time data stays in memory after it’s read off the disk, improved almost 100x:

Google Chart

The server was suddenly more responsive, more usable, and the mission-critical applications started flying again.  Mr. Nastydatabase was confined to his own sandbox, hurting no one else but himself until he could learn to play well with others.


Twitter historical database of my tweeps

19 Comments

In my never-ending attempts to distract you from doing real work, I give you something you have absolutely no use for: a SQL Server database backup with about 100k tweets from people I’ve followed over the last couple of months.

I use Tweet-SQL to cache and analyze a lot of things from Twitter.  This database isn’t the actual one I use, but it’s just an export of a subset of tables:

  • Users – the tweeps.  The “id” field is Twitter’s internal number for you, not my own – comes from their API.  The cached_* and subscription_* fields are my own, not Twitter’s.
  • UsersHistory – whenever I fetch results from the Twitter API and someone’s information has changed, I store the old version of their profile in this table.  Typically, the field that’s changing is their followers_count.  The “id” field is my own identity number, not from Twitter’s API.
  • Statuses – the tweets (and yes, Twitter calls them Statuses).  The “id” field is from Twitter’s API.

Sample Queries

This will give you the most loudmouthed tweeps:

Resulting in:

Top 10 Loudmouths
Top 10 Loudmouths

And this query gives you the hours when people tweet the most (in Central time):

Resulting in:

Lively Times of Day
Lively Times of Day

Things to Know About the Data

There’s some holes in the data when my server bombed or the Twitter API didn’t return data correctly, and unfortunately, a lot of those holes are around the PASS Summit.  I wanted to refetch that data before giving you this database, but I’m running out of time and I’ve got other things on my plate, so I figured I’d just let this loose as is.

The database doesn’t include people with protected tweets, and it only includes things I’d see on my home page.  If someone mentioned me but I’m not following them, you won’t see it in this database export.

You can download the SQL Server database backup and restore it onto a SQL 2005 (or newer) server.  If you find anything interesting in the backup, post it here in the comments.  I’d love to see what you find!  And of course, I’d highly recommend Tweet-SQL – it’s a fun little tool if you’d like to analyze Twitter data like who’s following who, who gets retweeted the most, or what you’re missing when you’re gone.


How I Use GTD 50,000 Foot Goals

26 Comments

David Allen’s productivity book, Getting Things Done, has made me a better person.

Getting Things Done

After using its methods for years, I’m even more convinced it can help anybody in IT. Today, I’m going to explain how I worked before GTD, and how I work with it now.

How I Handled Tasks Before GTD

Years ago, I tracked my to-do list in a text file. I broke the file up into two sections, Work and Home. My Work section looked something like this:

Everything I did was tactical – it was all about putting out fires. I arranged tasks in order of priority, with the first tasks being the most urgent. When someone walked into my cube with a new task, I would open my text file and say, “Where does this new task fit in with my priorities?” We would agree upon a position, and I’d add their task to my list.

I used this same approach with all incoming tasks – whether email, phone calls, or in person. Sometimes I’d send my actual text file, and sometimes I’d just walk them through it verbally over the phone. Upon seeing my task list, more often than not their eyes would bug out and they’d shake their heads. “Sorry – I need it fast, but it looks like you’re pretty busy. I’ll go bother someone else,” they’d say. That worked really well for me!

As I completed tasks, I changed the minus sign to a plus and moved it to the top of the “Done” section. Every now and then, when my manager asked what I’d been up to lately, I could whip out my trusty text file and copy/paste the appropriate sections into an email.

While that helped keep unimportant new tasks out of my way, it didn’t stop me from spending my time firefighting. My tasks were determined by what other people wanted from me. There’s nothing wrong with pleasing your customers, but – well, actually, there is something wrong with it. It’s the cliched movie character who focuses on making everybody else happy, yet never stops to take care of themselves.

GTD and the Big Picture

Unlike productivity methods like Franklin Covey that revolve around your ability to shell out big bucks for paper day planners, GTD is system-agnostic. If you’d like to track your GTD tasks with a text file, and if it works for you, that’s totally fine. There’s a bunch of ways you can accomplish GTD.

GTD wants you to get from Point A to Point B. It doesn’t dwell on whether you drive a Maserati, take a bus, or hoof it. Instead, it just focuses you on Point B.

GTD separates the means from the end, because you’ve probably lost focus on the end already.  GTD asks you to build a set of 50,000 foot goals for yourself – things that you ultimately want to accomplish before you die. Preferably, long then. The best way to illustrate it is to share my own 50k goals, which aren’t in any particular order because they’re all equally important:

  • Be very financially secure.
  • Be a fantastic partner for Erika.
  • Enjoy life while I can.
  • Be strong and healthy.
  • Be a good son and brother.
  • Be a good Catholic.

The more ambitious GTD practitioners create a set of 40,000 foot goals that map up to the 50k ones, and then a set of 30k foot goals. For example, under my “Be very financially secure” goal, my 40k foot goals are:

  • Increase my income. These are tasks that, when performed, result in money in my bank account shortly thereafter. 30k goals under here might include taking on side consulting work, but during the day, being a good employee matters here. I have to make my managers and internal customers happy if I want to get a raise. If I was really anal, I could map out a set of 20k goals like keeping my manager updated, staying abreast of the company’s overall goals, and so forth, but I’m not quite that serious about GTD (yet).
  • Increase my marketability. These are tasks that might not pay off tomorrow, but they have a high likelihood of putting me in a good position down the road. Blogging falls into this category, as does helping other people.
  • Reduce my expenses. Budgeting, rereading Dave Ramsey’s books, avoiding gadget purchases, and improving my credit rating all come into play here.
  • Improve my financial position. Tasks here might include increasing my savings, being properly insured, and meeting with a financial advisor.

That’s just the financial one. It might seem common-sense, but here’s where it gets interesting.

When I get a new idea or an assigned task, I line it up to one (or more) of these goals. If something doesn’t line up with these goals, it doesn’t get into my task list. If something conflicts with these goals, it doesn’t get into my task list. The rejected tasks are either delegated to someone else or politely refused.

That’s the theory, anyway.

Periodically Revisiting Goals and Tasks

In practice, I get distracted by bright shiny things. Some sexy new technology comes out, or I think somebody’s got a brilliant idea, or I don’t want to let somebody down, and next thing you know it I’ve got a couple of bad tasks in my list. I don’t realize it right away because I’m so enchanted with the idea itself, and I’m perfectly content to let it sit in the list.

I confuse “I can” with “I should.”

David Allen instructs GTD practitioners to periodically revisit their 50k goals and their task list to make sure everything lines up. I do this once per quarter on a long plane flight, and sure enough, I come up with things that have weaseled into my task list despite my best intentions. For example, this quarter I built a Twitter bot account to randomly spout off random jokes every couple of hours just because it was an interesting technical exercise. I don’t pull my hair out and wail about the time I put into it, but it’s just an example of how I got sidetracked by something fun. All work and no play does make Brent a dull guy, but it’s not like I don’t have enough fun stuff planned in the pipeline.

I use a hybrid of systems to manage my GTD goals and tasks. I track my 50k and 40k goals in a text file, and I keep my day-to-day tactical to-dos in RememberTheMilk.com. RememberTheMilk’s Pro level ($25/year) has a slick iPhone app that syncs over the air, and it works when disconnected too, like on planes. I can review my tasks on the plane, make changes to them, and RTM automatically syncs them when I’m back on the ground.

To do my quarterly review, I pull up my 50k/40k text file and save it with a new name for the new quarter, like GTD2009Q4.txt. I review these big-picture goals and make very small tweaks where necessary. After a few quarters, I’m surprised that these still adapt and evolve over time as I learn more about myself and what I want from life. After updating my goals, I leave those up on the screen and get out the iPhone. I scan through my tasks in RememberTheMilk and make sure they each line up to one of my 50k/40k goals, and that they’re in the right priority order.

I only prioritize things that I think I’m going to accomplish in the next couple of weeks. Generally I find that I get enough incoming fires to keep me pretty busy, and I don’t need to prioritize more than a dozen or so tasks at a time. The rest just stay in a murky pool at the bottom – I’ll get to ’em when I’ll get to ’em.

The Result: Peaceful Focus and Productivity

When I step off the plane, I know where I’m going – and I don’t mean baggage claim. I know what I need to do, and I’m perfectly comfortable with the volume of tasks. I know I can only accomplish a limited amount of things in the time I have each day, and I believe I’ve made the best choices possible given my long-term priorities.

GTD helps me to do a better job of saying no. I’m acutely aware of the opportunity cost of taking on new tasks, and I know what’s most important to me. For example, I can’t take on more work if it means spending less time with the ones I love, or if it causes me to sacrifice my health. Because I’m freshly aware of my big-picture goals, it’s that much easier for me to explain to myself why I wouldn’t take on a particular task.

GTD helps me to do a better job of saying yes, too. When something is truly important and lines up with my priorities, I’m more able to push things around in order to accomplish it. When someone comes up with an emergency task, I can do a much better job of being the guy to fix it, because I know exactly what I have to push aside in order to do it. For example, I can more easily say, “I’ll help you fix this, but I need you to get Sam to handle these three tasks for me right now.” When managers see someone so on top of their priority lists and make great tradeoff decisions, they’re more likely to give you the backup you need. If you just say, “But boss, I don’t want to work late again!” they’re more likely to tell you to suck it up.

I don’t think I’m a better employee due to Getting Things Done, but overall, I’m a much better person.

I’m certainly not done with my 50k tasks – I have one hell of a lot of work to do. However, every time I do a quarterly review, I’m pleasantly happy with any progress I’ve made. After all, before GTD, I didn’t even SEE those 50k goals!


Microsoft MVPs: NDA + Twitter = Yammer

4 Comments

Every year, Microsoft MVPs gather for a summit where they talk about <NDA> and <NDA>.  Just like any other conference, they want to talk about this stuff over social networking sites like Twitter, but they can’t because it’s NDA.

There’s an app for that.

Yammer
Yammer

Yammer is a free private version of Twitter.  You sign up with your company’s email address, and you can only see tweets (yams?) from people with that same domain name.  For example, us Questies use it to communicate about internal projects we’re working on. It’s not perfect – it doesn’t work with Twitter clients, for example, but at least there’s Windows desktop clients and even an iPhone client.

Wouldn’t it be cool if every MVP had an account on a specific domain (like, say, MVPs.org) and then we all used Yammer to communicate during the MVP summit (and beyond)?  Here’s one way someone could make happen:

  1. Set up an email server with Active Directory accounts for each MVP
  2. Do some kind of screen-scraping to find out when MVP profiles disappear, and then revoke the associated user’s AD account
  3. Profit!  Okay, not really, but you’d endear yourself to a lot of very high-profile IT people, and maybe get consulting gigs out of it, so possibly profit.

I’m throwin’ it out there because I’m an idea guy.  (Translation: I have no Exchange or screen-scraping skills.)


Jamie Thomson’s whistlestop tour of SSIS addins

1 Comment

At #SQLbits, Jamie Thomson (Blog – Twitter) demoed the following SSIS add-ins:

  • Kimball SDC
  • Trace File Source
  • XMLify
  • File Watcher
  • Dynamic Data Flow
  • Rank Transform
  • Normaliser
  • Twitter
  • Compression

XMLify

Jamie find this useful when parsing error output from other SSIS steps, which often have several result sets with different columns.  XMLify dumps all of the data into a single XML file for easier error storage.

It’s currently only available for SQL 2005 on Codeplex, but Jamie’s updated it for 2008.  He expects to upload it to Codeplex shortly.

Kimball SDC

SSIS includes a Slowly Changing Dimensions wizard, but Jamie says it has extremely poor performance due to the amount of lookups it does, plus you can’t modify your work.  You have to reuse the wizard.  One workaround is the KimballSCD tool on Codeplex, which handles Type 1 and Type 2 dimensions.  These dimensions track the history of our data – for example, as our customers change from Single to Married to Divorced, we may want to capture those changes so we can view their status over time.

The KimballSCD component takes your incoming stream of data and dumps out separate streams with new records, changed records, deleted records, invalid input, and so forth.  It has a staggering array of configuration choices on how to handle errors.

Twitter Task

Built by Andy Leonard and Jessica Moss, this SSIS component can fetch and retrieve tweets.  Of course, when he went to demo Twitter.com, the page took forever to load.  Ah, the curse of using Twitter and WiFi networks for demos!

He demoed how to send tweets, then how to receive them and pipe the results through the Term Extraction task.  It’s basically data mining for text – it finds the most popular phrases in the stream of tweets.  Jamie asked if attendees found it interesting, and they definitely did.  A couple of attendees wanted to know when Twitter search integration would be included.  Doh!

Normaliser

This component takes a flat source like a list of orders that includes both header and detail info in the same row, and then normalizes it.  You have to pass in the data in the right sort number, because it uses those sorts to determine duplicates.  You pick which fields determine a header versus a detail record using checkboxes.

Rank Transform

The ranking T-SQL functions in SQL 2005 will take a set of data and add a rank column, and this SSIS component does the same thing.  Jamie says it’s still a little buggy, but he’ll work out the bugs in the next few days.  (Honesty is the best policy!)  The bugs are problems with the UI – checkboxes don’t show up as checked when they’re supposed to be.  The data under the covers works though.

It has nice options for rank, dense rank, row number, and row number by partition.  Rank and dense rank are two different ways to handle ties.

Compression Task

Pass in a file – but only one file at a time – and this task will gzip it.  It works for SQL 2005, and there’s a newer version coming on Codeplex to work in SQL Server 2008’s SSIS.  There’s an identical task to unzip.  I can see this as being useful for passing big XML files over networks.

File Watcher

This task watches a directory and waits for files to arrive.  When a file is created, it goes on to the next task in the package.  The File Watcher passes the name of the newly created file to the next task as well, so you can process that file.

Trace Reader

This takes a SQL Server trace file as a source, and then splits it out into three data outputs: short queries that took under 300ms, queries that took 300-1,000ms, and queries that took over a second.  Useful for DBAs who want to automate performance tuning on a large scale.

Dynamic Data Flow

The only non-free tool in the demo, Dynamic Data Flow is by a company called CozyRoc.  You can use one destination in SSIS, but populate different tables based on the contents of your data.

I bailed out just before the last task was shown because I had to get to my own session.

End of the Line

Jamie did an awesome job of demoing a lot of stuff in a short period of time without being overwhelming.  I can really appreciate how much work he had to put into these demos – every single component needed its own set of data.  Fantastic work.


Simon Sabin’s talk on query performance

Execution Plans
1 Comment

At #SQLbits, Simon Sabin (Twitter) talked about car crash queries: queries that suddenly have bad performance out of nowhere, yet if you copy/paste them into SQL Server Management Studio, they run quickly.  The culprit is often parameter sniffing: the engine looks at the query and builds a plan, but if the parameters in the WHERE clause (or joins or whatever) change that plan may not work right anymore.

Simon Sabin onstage at SQLBits
Simon Sabin onstage at SQLBits

Simon likened it to getting walking directions.  If you ask for directions from Big Ben to the Millennium Wheel, your best option is walking.  But if you decide to go from Big Ben to the Eiffel Tower,walking is no longer the best option – because the statistics of the distance you’re trying to cover is suddenly different.  SQL Server’s statistics about the quantity and distribution of the data in your database help it determine how to build the best directions.

Scaling up to higher numbers of users also changes how queries perform.  If one query returns in 250 milliseconds, that doesn’t mean that 100 of those queries running simultaneously may not all finish in 250 milliseconds each.  He likened it to a grocery checkout line – the more people you put in line, the more the folks at the end of the line are going to have to wait.

A great example for parameter sniffing troubles is when the same query is run in both a stored procedure, and standalone.  It may perform poorly inside the stored proc, but when the DBA tries to troubleshoot it, it performs fine.  The two queries are using different execution plans.  Simon demoed how to compare the two plans, and how to find out why the bad plan isn’t optimal.

One way to get better plans is to get better statistics, and you have to do better than SQL Server’s default statistics.  SQL creates its own statistics for new tables, but they don’t work terribly well.  If you’re using table variables, those don’t get statistics at all, but on the plus side, they won’t cause recompiles when the data distributions change.  Temp tables, on the other hand, get statistics, but they incur recompiles when SQL Server sees that the temp table contents have changed dramatically and need statistics updates.

He demoed how SQL Server will create different query plans based on the exact text of the query.  If one query includes comments and another doesn’t, they can end up with different query plans and different performance.

In order to catch these problems, you have to monitor and baseline your application, then identify changes in reads, writes, and CPU time.  You don’t want to monitor duration, because you won’t catch things until it’s too late.


Christian Bolton on SQL Server memory

SQL Server
24 Comments

At #SQLBits, I was quite excited to attend this session because of the presenter.  Christian Bolton of COEO (Twitter) was the head author on our upcoming book SQL Server 2008 Internals and Troubleshooting, and he’s one of the only 8 Microsoft Certified Masters on SQL Server that work outside of Microsoft.

Physical vs Virtual Memory

Physical memory means the fast, volatile storage of the chips themselves.  We’re finding 64GB is very common these days.  If every app tried to access this memory directly, we’d run into performance problems quickly.  That’s why virtual address space came about.  On 32-bit OSs, the default settings leave 2GB for the kernel and 2GB for applications.  On 64-bit OSs, that breaks out to up to 8TB of kernel memory and 8TB of application (user mode) space.

All applications just work with virtual address space first – they don’t know whether they’re working with physical memory or the page file.  The allocation of memory to either chips or the page file is the job of the Virtual Memory Manager.

What Uses SQL’s Virtual Memory

The Buffer Pool is SQL’s main memory consumer, and that’s managed by the min and max memory settings in SQL Server.

Another consumer is VirtualAlloc – which just means anything that doesn’t use the buffer pool.  The heap manager, thread stacks, and multi-page allocations (things that need more than 1 page to store data).  For example, execution plans are normally quite small, but they can exceed one page, and we need to store them in memory.  Linked servers and extended stored procs also use VirtualAlloc to grab memory.

The buffer pool will never be bigger than physical memory.  If you’ve got 32GB of memory and a 64GB page file, your buffer pool won’t be bigger than 32GB.  On an x86 box, this can be problematic since you won’t have more than 2GB of user mode space by default.  Because there’s not much memory, SQL Server has to reserve some memory before the buffer pool grabs hold of the rest, and that’s called memtoleave.  It’s calculated with MemReserved + (NumThreads * StackSize).  By default, MemReserved is 256mb.  NumThreads is the max number of worker threads configured.  StackSize is .5mb on x86, 2mb on x64.  Christian had an excellent visual demo showing how the memory gets used up on different CPUs and memory amounts – I can’t begin to convey that here, but hey, that’s where his great memory chapter in the book comes in.

Christian demoed the RMLUtils to stress test SQL Server and affect the memtoleave space.  He asked how many attendees were using wait stats for performance analysis, and the number was about the same as my presentation’s attendees – around 10%.  Folks just aren’t using wait stats yet.  But if you turn around and ask how many of those 10% use it as their primary troubleshooting tool, it’s usually 100%.  Folks who use them, love them, as I’ve blogged before about wait stats.

SQL Server’s Memory Model

Memory nodes are the lowest level allocator, and you can view info about them in sys.dm_os_memory_nodes.

Memory clerks are the next level, and they’re used to access nodes.  When something in SQL wants memory, they ask the clerks, and the clerks allocate nodes.  There’s a general MEMORYCLERK_SQLGENERAL, and then heavy memory users get their own clerks, like MEMORY_CLERK_SQLBUFFERPOOL and MEMORYCLERK_SQLQUERYPLAN. You can check what they’re using with the DMV sys.dm_os_memory_clerks.

He talked about the different kinds of caches, and you can query them in sys.dm_os_memory_cache_counters.  He touched on how the plan cache has hard-coded maximum sizes based on your memory size – you don’t want plans running you out of buffer cache.  When you throw in the buffer pool and query memory too (for joins/hashes), it’s easy to see how SQL Server really needs all the memory it can possibly get.

Christian tied it all together by showing a slick DMV query that breaks out cache space usage by database.  I glanced through his blog but I couldn’t find it – I’ll hit him up for that later.

Best Practice: Lock Pages in Memory

Locking pages in memory makes sure SQL Server’s memory is not paged out to disk.  Otherwise, Windows may push it out to disk – often with bad drivers.  The first thing to do when running into SQL’s memory getting swapped out is to check for updated drivers, then tweak down SQL’s max memory setting, then use AWE/lock pages in memory, then consider upgrading to Windows 2008.  Even if you have bad drivers, Win 2008 won’t be as aggressive with trimming SQL Server’s address space.  Memory allocated using the AWE mechanisms can’t be trimmed.  Should you lock pages in memory on 64-bit systems?  Yes, because it locks pages in the working set.  Only the data cache is locked, though – other memory like the plan cache can still be trimmed.

You can lock pages in memory on Standard Edition, but you need to get on the right patch levels – see this knowledge base article for details.

Christian asked how many DBAs set the max server memory, and I was surprised that the vast majority of DBAs haven’t.  I’m a big cheerleader for setting that.  Glenn Berry recently wrote a set of guidelines for max server memory.  Christian recommended leaving 2GB for the OS, plus the memory for the worker threads we calculated earlier, plus 1GB for the multi-page allocations/linked servers/etc, plus 1-3GB for other applications (if necessary.)  This is a worst-case-scenario guideline because we just want to make sure our server isn’t paging to disk.

Bottom line – I learned a lot from this session, and this one alone was worth the price of admission!


Jasper Smith on SQL 2008 R2 DBA features

0

At SQLBits, MVP Jasper Smith of SQLDBATips.com held a session on what’s newin SQL Server 2008 R2 for database administrators.

Application and Multi-Server Management

To illustrate the problem with server sprawl, Jasper gave some quick stats about a big enterprise.  Microsoft IT has around 5,000 SQL Server instances with 100,000 databases, averaging CPU utilization under 10%.

To help solve this problem, SQL 2008 R2 introduced Data-Tier Applications (DAC packs) as a new unit of deployment for T-SQL apps.  They contain developer intent as policies – for example, the developers may want high availability, 2 CPUs and 2 gigs of memory.  Of course, this can present problems down the road – developers will always want more resources.  Jasper demoed the SQL Server Control Point.

SQL Server Connection Director & Connection Plans

Right now, SQL Server connection strings are tied to the server name and database name.  It’s not easy for DBAs to move heavily utilized databases to a more powerful server because we have to touch every client.  The problem is made worse because over time, we need to continuously consolidate databases together as older databases seem to stay on old SQL Server versions.  Take SQL Server 2000 – many of us are still managing a handful of 7 or 2000 servers because a handful of apps just won’t work on newer versions.  We need to combine these old things onto the minimum number of servers possible, but database moves are painful.

There’s help coming in the long term, but not in SQL Server 2008 R2.  The CTPs of SQL Server and Visual Studio for next year’s release contain a feature called the Connection Director, but Microsoft has already said Connection Director won’t be included in the RTM builds.  Bummer!

The new declarative connection plans will let us specify connection strings that lives in Active Directory or on a file share as shown in Books Online.  We can specify a cache refresh interval much like DNS time-to-live parameters – we would put a long cache refresh interval in the plan normally, and then turn that time down shorter when we plan to do maintenance.  Jasper demoed doing exactly this, changing the plan while running an app that regularly connects to SQL.

Me likey!  Can’t wait for that to be introduced.


Donald Farmer #SQLBits keynote on PowerPivot

9 Comments

At SQLbits, Donald Farmer (@DonaldDotFarmer) talked about IT in terms of data, and did it with an interesting picture story from the early 20th century.  Data today isn’t all that different from the messy desktops and clean library card catalogs of the last century.

Donald Farmer onstage at SQLbits
Donald Farmer onstage at SQLbits

IT professionals still break into the same 3 roles that existed a century ago:

  • Acquiring and storing data
  • Validating the data quality
  • Managing calculations on the data

Our roles, though, conflict with those of analysts – power users who want to do this work themselves.

Letting People Build Something Cool

Analysts do their slicing and dicing in our “approved” tools, but when they bang up against the ceilings of our capabilities, what do they do?  Universally, they export to Excel, and then start doing crazy things in this radically familiar environment.

To build the future of BI, Microsoft is delivering PowerPivot as an optional add-in for Excel 2010.  Excel 2010 installs side-by-side with older versions, so users can install it without violating corporate policies on using older Excels.  Farmer demoed PowerPivot with a >100 million row table using his laptop, sorting & dicing it in real time.  This demo still hasn’t gotten old for me yet – I love seeing that.  Since PowerPivot is a column-oriented data storage mechanism, it performs really well in memory.  It still takes a long time to get 100 million rows into PowerPivot (over the network, for example) but once it’s there, it flies.

PowerPivot data is read-only, though – once it’s been pulled in and compressed into column-based storage, it’s pretty much stuck.  If you need to make modifications, the easiest way is to use linked tables, and modify the linked ones.  Farmer demoed how to create relationships with those tables, and how PowerPivot helps detect which relationships don’t violate integrity rules.

To get that data into PowerPivot, one easy way is to use RSS. Business users can click the RSS icon on new SSRS reports, and Excel will open the feed to create a PowerPivot document.  From there, users can easily do their own slicing & dicing.

When we look at Excel spreadsheets from analysts, often the front couple of sheets are nicely formatted reports.  The rest of the sheets are various intermediate pivot tables and aggregates hitting other sheets of source tabs.  Excel’s new formulas in PowerPivot help you get those well-formatted aggregates faster with less intermediate steps.

I Made Something Cool! Now What?

Once users have built something cool in Excel, they didn’t have a solid way to share that with multiple users.  Farmer says SharePoint 2010 is like the ultimate file share for Excel because:

  • IT knows the files are backed up
  • IT knows who’s building the reports
  • IT knows who’s accessing the files (which means we can tell which reports we may need to take over)
  • People can consume the data without actually having PowerPivot or even Excel – it just works in the web

PowerPivot spreadsheets with slicers look fantastic in SharePoint.  I can envision people building their own report portals without BI team help.  There’s still a question of where the data’s coming from and how accurate it is, but that’s the case no matter how reports are delivered anyway.

Farmer says that this new self-service BI doesn’t interfere with real BI teams – you still need real BI in order to get analytics.  The self-service BI delivers the answers to the “background noise” of analytics requests – small, quick-hit requests that never end.  Farmer says self-service BI isn’t for the big projects, and the big tools aren’t right for self-servie needs either.

To try out PowerPivot, hit:


SQL Server Events in Chicago

0

I’m jumping into the Chicago SQL Server community with both feet as soon as I get back.  I’m speaking at the next ChiPASS meeting on Thursday, December 10th in downtown Chicago.  I’ll be presenting the same Disaster Recovery 101 presentation I gave at the PASS Summit.  You must RSVP if you plan to attend, because they have to put you on the security list to get into the building.  And no, that has nothing to do with the fact that I’m presenting, ha ha ho ho.

I’m also submitting sessions for the upcoming SQLSaturday in Chicago next April, and you can join me!  It’ll be on April 17th, but the planning starts now, and we need your help to make the event successful.  SQLSaturdays are completely free events for the attendees, and speaking there is a great way to give back to the community.

You’ll also be polishing your presentation skills, which pays off when you’re up against tons of other speakers for coveted PASS Summit sessions.  Remember, if you get sessions approved for the Summit, you get a free registration!  Think of your SQLSaturday sessions as a down payment towards your Summit skills.

Enter your session abstract today, and as a thank-you, I’ll give each SQLSaturday Chicago speaker a personal thank-you gift at the event.  Don’t get too excited though – it won’t be a free TabletPC like those PDC attendees got (I’m not bitter.)

Update: I’ve gotten a couple of emails asking if I’d fly out to local user group meetings to speak.  I would love to, but the reality is that I have to focus on reaching the most number of people possible in relation to my travel time.  When I fly out to speak at a user group, I spend several hours in flight back & forth, plus I often have to overnight at a hotel because the user group meeting takes place after the last flight out.  All of that costs money and time, and frankly, doing that for a 10-30 person group for 1 hour is pretty painful.  I already travel too much (especially if you ask my wonderful girlfriend who already puts up with too much).  I’m completely open to doing remote presentations, but if I have to travel, I need to combine several events, or reach a lot more than 10-30 people.  Just like your company is asking you to do more with less, Quest is asking us to figure out how to reach more people with less, and usually that means virtual conferences or focusing on big (several-hundred-people) meetings.


The Glamour of International Travel – 2009 Edition

16 Comments

Lest you think my European trips consist of walking around shooting pictures in Rome, I shall share with you a recap of my trip so far.

Thursday – the entire Rome sales force is out sick. There’s a flu going around, so my staff training sessions turn into a day of me catching up on work.  Friday, two salespeople show up.  It’s an improvement over the day before, so I’ll take it, and I take revenge by having fun walking around Rome on Saturday.

Sunday – British Airways loses one of my bags. Only one of my two bags made it to Stockholm.  Being a DBA on a two-week trip, I’d planned ahead and packed two bags with equally divided gear.  Redundancy, redundancy, redundancy.  I didn’t pack more than I needed, mind you, I just striped my clothing, as it were.  I didn’t stress out, but it didn’t make things easier.

Sunday – I arrive in Stockholm in the rain. I can’t find a taxi, so I take the train into town.  From the train station, I try to catch a cab to my hotel, only to be told by the cabbies that it’s just around the corner, and they won’t take me – I have to walk instead.  I walk two blocks in the rain, try to check in, and it’s not the right Radisson.  I walk back to the cab stand, point angrily at the map, and we come to an agreement.

Monday lunchtime – our Stockholm lunch & learn seminar draws 0 attendees. The salespeople frantically call customers to find out what’s going on, and turns out they all either had production emergencies or they just didn’t want to leave the office.  I spend a couple of hours training the sales staff instead.

Monday evening – my beloved Macbook Pro won’t boot.  It turns on, and then displays a no-smoking style circle with a slash through it.  I’m not worried about my data, because I’ve got a second internal hard drive with Time Machine, but I can’t read that drive without another Mac.  Since nobody’s got them in the Copenhagen team, I briefly consider buying a second Macbook when I get to the London airport, but European prices for Apple gear are outrageous.  I’ve got a two-week-old backup of all my decks on a USB flash drive with me, but I’d tweaked them for SQLbits.  Oh, and yeah, I’m supposed to present Tuesday morning in Copenhagen.

Tuesday morning – I present with a borrowed laptop using my USB backups.  It goes smashingly – lots of attendees, lots of good questions, and lots of thumbs-up.  Whew.  One success.  I’d love to walk around through Copenhagen snapping pictures, but I have a tight timeline now if I’m gonna get my decks updated for SQLBits on Friday.

Bork Bork
Bork Bork

Tuesday afternoon – I buy a Swedish netbook, a Lenovo S10-2 with Windows XP, because it’s the only sub-$1,000 one I can find in stock after visiting three computer stores, and I’m running out of time.  Upon powering it on, I discover that it’s not the multi-language version of XP – it’s just all Chef, all the time.  I can almost deal with it, but even the built-in Office is Swedish, and I keep running into slide problems with it.  I work until midnight getting it reinstalled with an English build of Windows and Office using an MSDN account, a USB key, a paper clip and two socks.

Wednesday morning – I’m scheduled to leave Copenhagen at 8am, but of course that doesn’t go right either.  British Airways tells us we have to delay boarding for 20 minutes because there’s high winds in London, and there’s no sense in us getting onto a plane that can’t leave the airport.  20 minutes later, they board us onto the plane and pull away from the jetway.  They proceed to inform us that yes, there’s still high winds in London, and no, we still can’t depart yet, but they stuffed us onto the plane anyway.  We taxi to a remote area of the airport and they shut the engines down for an hour, because they figure as long as their employees are unhappy, we should be unhappy too.  I’m quite okay with the delay, because my netbook’s got a full battery, so I continue knocking out my presentations.

Wednesday – news breaks that PDC09 attendees (the conference I really wanted to see this week) all get free tablet PC laptops with multitouch, Office 2010, and more.  I contrast that with my Swedish netbook that cost a minor fortune, and I think I just might have gotten slapped in the face with the short end of the stick.

Wednesday afternoon – I check into the Quest corporate house. We’ve got an actual house in Maidenhead, a London suburb, because so many folks breeze through here.  I really like the place, although it’s about a mile’s walk from food, and boy do I need a drink.  I walk to a pub, down a big Guinness and a burger, then get chastised when I try to pay with a credit card.  The waitress angrily informs me that nobody’s allowed to pay less than ten pounds with a credit card, so she rounds the bill up.  She then proceeds to hand me the 3+ pounds in cash, something an American would never do.  I happily hand it back to her and tell her to keep it, and it immediately brightens her day.  Hopefully she won’t be as cranky on my next visit.  I go back to the Quest house and throw a load of laundry into the washer/dryer, something really handy when you’re on the road for two weeks.  Ideally, I’d be in a hotel with dry cleaning and restaurants that do room charges, but I don’t mind sucking it up now and then.

Wednesday evening – I can’t pay with a credit card, but I can’t find cash anywhere. I’m somewhat hungry, but not enough to eat ten pounds worth of food.  Knowing now about the credit card minimums, I ask around at a couple of nearby restaurants, and none will take credit cards for less than ten or twenty pounds.  They point me to a cash machine half a mile away, but upon my arrival, it’s out of commission.  The shop owner doesn’t know of another nearby one.  I try ordering pizza, but the systems wig out when my delivery address doesn’t match my billing address, plus the billing address is in America.  I give in and just get a pizza to eat in the restaurant, then take the leftovers home for breakfast.  My status as a foodie is diminished.

Wednesday 11pm – I get a surprise visitor. I’m working on a presentation alone, in the dark, when I hear someone fumbling at the front door.  Thankfully, I’m not working in my undies, because in walks another Questie who’s just as surprised as I am that he’s not alone.  We end up talking into the wee hours of the night about IT, but man, that could have been ugly.  He’s thankful for my leftover pizza.
Quest corporate house in Maidenhead

Thursday morning – I check my clothes in the “dryer” and they’re soaking wet. The dryer’s drain is plugged, so my clothes just rolled around in a pool of water for an hour.  I hang my clothes out on a line, knowing full well they won’t dry before Iain comes to pick me up in a couple of hours.  I’ll be dry cleaning those the instant I get to the hotel for SQLbits.

Travel isn’t all unicorns, rainbows, and meals at WD50.  Part of me really wants to extend my trip by one day to attend the ComputerWeekly blog awards in London next week, where I’m in the running for Best Individual IT Male (hint: vote today! and often!), but the rest of me can’t wait to get back home to the States.  I love Europe, but I’d rather live here, not travel through it.  Traveling anywhere, not just Europe, is a royal pain when things don’t go as planned.

If you see me presenting at SQLbits this weekend and I seem even more relaxed than normal, it’s because at this point, I’m at one with the chaos.  Bring it on.  If my projector bursts into flames and my audience consists of hecklers wearing “I Love Microsoft Access” shirts, I’m still going to be grinning.


Losing Weight and Testing Code

7 Comments

David Stein (BlogTwitter) wrote a post called “Pop Quiz Hotshot” about starting your disaster recovery plan *now*.  It’s a great read with good points that everyone needs to act on, but the comments indicate that not everybody’s seeing eye to eye.  As usual, I rely on similes because I’m lazy.

How to Lose Weight

Get your pencils ready, because I’m about to give you the ultimate weight loss tip.  It’s going to sound almost too good to be true because it’s so darned easy, and here’s the craziest part – it can actually save you money!  That’s right – this is the tip that the exercise equipment industry, the personal trainer industry, and the vitamin industry are desperately trying to keep under wraps.  You ready?  Here it comes.  Don’t blink – you might miss it.

Eat less.  A lot less.

I know – it sounds ridiculous, but that wild technique helped me drop 40 pounds in under a year.  I didn’t exercise one bit, either.

I know what you’re thinking – you’re thinking, “But Brent, how can I possibly lose weight without spending money?  Don’t I have to spend a fortune on the FlabBlaster 3000 just like Chuck Norris tells me to?”  Far be it from me to disagree with Chuck – very far – but…

When The Regular Thighmaster Isn't Working
When The Regular Thighmaster Isn't Working

Buying Hardware Doesn’t Fix Bad Practices

No matter how much you spend on exercise equipment or systems management, you and your servers aren’t going to get healthier when the stuff sits on the shelf.

Money can’t buy you health.

It can pay for experts to come in and fix you when you’re sick, but it can’t keep you healthy – that part is up to you.  The very first step to getting healthier, and this goes for both your servers and your thighs, is to change your habits.  Elbow grease has amazing results when applied liberally.

Start Testing Your Restores. Now.

If you don’t have a spare server lying around, use somebody’s spare desktop.  We all have ancient machines sitting in closets from our last upgrade or that employee who just got fired because he couldn’t restore a dropped table.  (Get it? That’s a hint.)  Get that machine, and throw in a 1.5 terabyte drive for about $100.  Yes, use your own money if the company won’t pay, because this is an investment in your career.  If you’ve got several machines lying around, consider combining their memory if possible, but don’t sweat it – this is only your training wheels system.

Install the OS again from scratch, and put SQL Server Developer Edition on there or the 180-day evaluation version of SQL Server 2005 or 2008.  Don’t overcomplicate your life by trying to get every best practice ideally perfect – even if everything’s installed on a 1.5tb C drive, this system will still work for the basics.

Start by testing your restores once per week.  The first few times you do it, don’t try to script the whole thing out – just use SQL Server Management Studio and point/click your way through it.  Remember, high bang, low buck/effort: we want this whole thing to take less than two hours per week of your time, max. The restores aren’t going to be fast, but the point is to even figure out if we can do them, period.  After a couple of weeks, you’ll start scripting your work as you find more and more things that aren’t included in your test system – logins, DTS packages, jobs, whatever.  Document what you’re doing along the way, because every time you find something else that has to be done to make the server work, that’s one less lesson you’d need to learn under the gun.

One Month Later: Add the Apps

After you’re comfortable restoring the database, try to configure your application.  Install IIS, DLLs, code, whatever else you might need to get the app to run.  If you don’t manage the app, ask the app guys to take another old desktop and try to do their part to set up a restore testbed for themselves.  If they don’t want to, that’s okay – but now you’re starting to build up some cover for your rear end.

Some things might not work in your environment.  For example, if you’re using the evil xp_cmdshell, your developers may have hard-coded paths and files into their code.  The faster you find things like this, the faster you can get them fixed before disaster strikes.  When disaster strikes, these problems won’t be seen as developer mistakes – you’ll get blamed, because you can’t make the server work the way it used to.  99% of your problems won’t stem from hardware that you can buy with a check, though – they’ll stem from practices.  Stop waiting for the company to buy you a Thighmaster, and start doing pushups.  It’s better than nothing, and when disaster strikes, the last thing you want to have is nothing.

When there’s enough basic plumbing in place that you think everything works, format the box and start over.  Use your documentation and try to repeat the whole process.  The first several times you do this, you’re going to continue to find more errors and gotchas.

When you think your documentation is complete, format the box and hand the documentation to your junior person or your manager.  Say, “I’ve got a set of steps to follow when disaster strikes, and I want you to test them for me, because if I’m not around then you’ll be the one doing it.”  They will be shocked, but down the road they’ll appreciate your due diligence.

This kind of disciplined effort is why experienced DBAs walk around with an air of confidence.  The best DBAs aren’t worried about what happens when disaster strikes, because they’ve already practiced it again and again and again.  When I was a DBA, I liked to say that disaster struck every week for me – it just struck in my lab.


Our Upcoming Book Cover

9 Comments

Now this is just plain liquid awesome:

My Book Cover Beats Your Book Cover
My Book Cover Beats Your Book Cover

When WROX decided to dump the author photos on the book covers, I was bummed out.  One of the big selling points of a book is to have your name on it, to point to it in the bookstore and say, “I made that.”  Having the authors on the cover was even cooler, especially in a platform like SQL Server where the personalities are so identifiable.  The new book covers don’t seem to have anything to do with the content, and they don’t have any personality.  They scream “cheap stock photo.”

But when I found out ours had a race car on the front, I cheered.  No, cars don’t have anything to do with internals or troubleshooting – but it’s a car, and it’s going fast!  Woohoo!  I can’t wait to say, “Look for my book in the SQL Server section.  It’s the one with a race car on the front.”  Shazam!

Here’s a postcard Wiley/WROX is using to promote the book at SQLBits next weekend:

Promotional Postcard
Promotional Postcard

I’ve read the other authors’ chapters, and I can tell you with complete authority that I am by far the dumbest guy involved with this book – not just the brilliant authors on the cover, either, but also including two other folks involved, Cindy Gross and Jonathan Kehayias.  I am completely riding on their coattails.

Before I did this, I glanced at books and just figured that any author on the cover knew everything that was in the book.  For example, when I saw my buddy Jean-Claude Armand on the cover of Professional SQL Server 2005 Administration, I just assumed he was a genius who knew everything in that book cover to cover.  While JC is indeed a genius, don’t assume that I knew everything in our book’s chapters – on the contrary, I’ve learned a *lot* in every single chapter I’ve had the privilege to read.  Christian Bolton’s chapter on memory alone was worth the entire book, because the Quest LiteSpeed support folks are always asking me questions about MemToLeave and my answers suck.  Now, my answers suck much less.

I’m starting to see what authors mean when they say the writing process doesn’t seem as bad when it starts to fade into the rearview mirror.  Now that the book’s coming closer to press time, I’m feeling more and more psyched about it.  My junk still hurts, but there’s a very small part of my brain that’s starting to think about how to make it easier next time.

The book’s scheduled to be available in late December or early January, and you can preorder it now from Amazon for around $38.


Why Dedupe is a Bad Idea for SQL Server Backups

Backup and Recovery
184 Comments

Has your SAN admin or CIO been telling you not to compress your SQL Server backups because they’re doing it for you with a dedupe tool like EMC’s Data Domain?  I’ve been hearing from a lot of DBAs who’ve been getting this bad advice, and it’s time to set some records straight.

The Basics of Storage Deduplication

Dedupe appliances basically sit between a server and storage, and compress the storage.  Sometimes they do it by identifying duplicate files, and sometimes they do it by identifying duplicate blocks inside files.  It isn’t like traditional compression because the process is totally transparent to anything that stores files on a deduped file share – you can save an Excel file to one of these things without knowing anything about dedupe or installing any special drivers.  In theory, this makes dedupe great because it works with everything.

The key thing to know about dedupe, though, is that the magic doesn’t happen until the files are written to disk.  If you want to store a 100 megabyte file on a dedupe appliance, you have to store 100 megabytes – and then after you’re done, the dedupe tool will shrink it.  But by that point, you’ve already pushed 100 megabytes over the network, and that’s where the problem comes in for SQL Server.

Dedupe Slows Down SQL Server Backups

In almost every scenario I’ve ever seen, the SQL Server backup bottleneck is the network interface or the drives we’re writing to.  We DBAs purposely set up our SQL Servers so that they can read an awful lot of data very fast, but our backup drives have trouble keeping up.

That’s why Quest LiteSpeed (and SQL 2008’s upcoming backup compression) uses CPU cycles to compress the data before it leaves the server, and that’s why in the vast majority of scenarios, compressed backups are faster than uncompressed backups.  People who haven’t used LiteSpeed before think, “Oh, it must be slower because it has to compress the data first,” but that’s almost never the case.  Backups run faster because the CPUs were sitting around idle anyway, waiting for the backup drive to be ready to accept the next write.  (This will really ring true for folks who sat through Dr. DeWitt’s excellent keynote at PASS about CPU performance versus storage performance.)

With dedupe, you have to write the full-size, uncompressed backup over the network.  This takes longer – plain and simple.

Dedupe Slows Down Restores Too

The same problem happens again when we need to restore a database.  At the worst possible time, just when you’re under pressure to do a restore as fast as possible, you have to wait for that full-size file to be streamed across the network.  It’s not unusual for LiteSpeed customers to see 80-90% compression rates, meaning they can pull restores 5-10 faster across the network when they’re compressed – or in comparison, deduped restores will take 5-10 times longer to copy across the network.  Ouch.

It gets worse if you verify your backups after you finish.  You’re incurring the speed penalty both ways every time you do a backup!

And heaven help you if you’re doing log shipping.  That’s the worst dedupe candidate of all: log shipping does restores across one or more SQL servers, all of which are hammering the network to copy these full size backups back and forth.

So Why Do SAN Admins Keep Pushing Dedupe?

Dedupe makes great sense for applications that don’t compress their own data, like file servers.  Dedupe can save a ton of backup space by compressing those files, saving expensive SAN space.

SAN admins see these incoming SQL Server backups and get frustrated because they don’t compress.  Everybody else’s backups shrink by a lot, but not our databases.  As a result, they complain to us and say, “Whatever you’re doing with your backups, you’re doing it wrong, and you need to do it the other way so my dedupe works.”  When we turn off our backup compression, suddenly they see 80-90% compression rates on the dedupe reports, and they think everything’s great.

They’re wrong, and you can prove it.

They don’t notice the fact that we’re storing 5-10x more data than we stored before, and our backups are taking 5-10x longer.  Do an uncompressed backup to deduped storage, then do a compressed backup to regular storage, and record the time differences.  Show the results to your SAN administrator – and perhaps their manager – you’ll be able to explain why your SQL Server backups shouldn’t go to dedupe storage.

In a nutshell, DBAs should use SQL Server backup compression because it makes for 80-90% faster backups and restores.  When faced with backing up to a dedupe appliance, back up to a plain file share instead.  Save the deduped storage space for servers that really need it – especially since dedupe storage is so expensive.


Playing Around with SQL Azure and SSMS

Microsoft Azure
11 Comments

The latest build of SQL Server Management Studio for SQL 2008 R2 includes built-in support for SQL Azure.  The November CTP is still only a feature-complete preview, not a release candidate, so don’t go installing it willy-nilly on your production desktop.

To use this, you’ll need a SQL Azure account.  You can register for an invitation code, and while you’re waiting, check out the SQL Azure Team Blog and the Microsoft SQL Azure site.

Create an Azure database and get the connection string.

Go to sql.azure.com and sign in with your Live account.  By default, your database list will just show master:

Azure Database List
Azure Database List

Click the Create Database button at the bottom and enter a new database name.  You can either pick 1GB max size or 10GB, and when Azure goes live, you’ll either be billed $10 per month or $100 per month.  Your database list will refresh.  Click on the new database name, and click the Connection String button to get the full string.  All you really need is the server name.

Azure Connection Strings
Azure Connection Strings

Open the SQL Azure Firewall

Just like SQL Server 2008 ships with remote connections disabled, so does Azure.  To open ‘er up, click the Firewall Settings tab in the SQL Azure web control panel and click Add Rule.

Adding a SQL Azure Firewall Rule
Adding a SQL Azure Firewall Rule

Enter a name and an IP address range and submit.  SUBMIT, I TELL YOU!  (Guys, seriously, it’s 2009.  Stop using S&M verbiage on your web forms.)

Open SQL Server Management Studio and Connect to SQL Azure

Open SSMS and start a new Database Engine connection.  Copy/paste the server name from the connection string you generated earlier.  Use SQL Authentication (not Windows trusted authentication) and enter the username and password you set up for SQL Azure.  (This is not your Microsoft Live account.)  Click Connect, and you get a normal Object Explorer browser:

SQL Azure in SSMS
SQL Azure in SSMS

Click View, Object Explorer Details, and you can see the compatibility level, recovery model, and collations – in my case, 100, full, and case-insensitive:

Object Explorer Details
Object Explorer Details

If your firewall settings haven’t taken effect yet, or if you didn’t set up a rule for your current IP address, you’ll get an error like, “Cannot connect to gr8clozgxt.database.windows.net.  Cannot open server ‘gr8clozgxt’ requested by the login. Client with IP address ‘85.18.245.70’ is not allowed to access the server. Log in failed for user ‘brento’. (Microsoft SQL Server, Error: 40615).”

Azure Connection Fail
Azure Connection Fail

Go back into the SQL Azure control panel and double-check your firewall rules.

Poking Around in SQL Azure

Now the fun starts.  First off, you can’t right-click on the server itself.  You can right-click on a user database, but there’s no Properties or Tasks.  If you right-click in the Tables list and click New Table, you don’t get a GUI – you get a table creation script.  Put the mouse away, speedy, because you’ve got some scripting to do.  Speaking of scripting, there’s a new option in SSMS for the type of database engine you’d like to script for, either “Standalone SQL Server” or “SQL Azure Database.”

Scripting Options
Scripting Options

You’ll find the master database in the System Databases tree, but no model or tempdb database.  There are no system tables visible in either your master database or your user databases, but there ARE system views like INFORMATION_SCHEMA.

Cross-database querying is a little odd.  In Object Explorer, click on the master database and click New Query.  The database dropdown is simply grayed out, and you can’t change databases once a connection has started.  Try to change it with a USE statement, and you get the following error:

You can’t specify the master database name, either.  You can query master system views like sys.bandwidth_usage, sys.database_usage, sys.firewall_rules, and sys.sql_logins only from the master database.

Querying sys.firewall_rules
Querying sys.firewall_rules

If you try fully qualifying their names like this:

You get an error:

Or this one:

Innnteresting.  Not everything’s quite hooked up in the Object Explorer either – try drilling into the Replication Options, and you’re told that “Operation not supported on version 10.25. (Microsoft.SqlServer.SqlEnum)”.

Not So Fast
Not So Fast

All in all, it’s an exciting step.  So let’s poke around the way a production DBA would:

Things That Don’t Work in Azure

Try this:

And you get this:

And same with our old buddy sp_configure – he’s not found either.

Try this (I picked spid 157 because that was my current logged-on one, and I found that high number rather interesting, but that’s a story for another post):

And you get this:

Same thing with CHECKDB.  All my good friends in the DMVs are MIA, too.

Which brings me to the final thing that doesn’t work in Azure – the production DBA.  In short, anything a production DBA would rely on isn’t there – and that’s because in theory, at least, Azure doesn’t need production DBAs.  Azure’s $100/mo 10GB pricing only seems expensive until you compare it to the cost of a full-time DBA for a small business.  I, for one, welcome our new Azure overlords, but only if they knock performance, availability, and scalability out of the park.

Is there anything you would like to see tested and documented about SQL Azure?  Let me know and I’ll take my best shot.  I plan on running some ballpark performance numbers over the coming weeks for starters.


PASS Recap: Discussions with PASS Board Members

#SQLPass
4 Comments

During the Summit, I had the chance to talk to most of the PASS Board of Directors members in hallways, bars, and other off-the-record places.  I didn’t conduct formal interviews with them, but a few things consistently stood out when talking to each of them.

These are smart people. I’ve never had a conversation with any of the Board members and walked away shaking my head.  I’m not blowing sunshine up anybody’s rear, either – I’ve had my WTF moments with a handful of volunteers who haven’t made it up to the Board level.  (If you’re reading this, I’m probably not talking about you, because the people I don’t “get” also don’t seem to read blogs.  Or books about management, for that matter.  Don’t get me started.)

These are passionate people. There’s nothing in it for them other than the warm and fuzzy feelings they get knowing they helped people.  If you wanna get rich, become famous, or feed the poor, the PASS Board is not the route to success.  These folks just really, really want to help the community get its act together, and they care enough about it to devote their limited spare time to the cause.

These are patient people. Whenever I talk to Board members, I ask the same question: “Why on Earth would you run for reelection?”  Being on the Board is like a second full time job – it requires holding a whole lot of hands, some of which have claws.  Sit through a volunteer meeting and you quickly realize that you can’t pick (or fire) volunteers.  Every now and then I have my moments where I fire off direct messages to Steve Jones telling him we gotta run next year, but sitting in volunteer meetings I snap back to reality.  I don’t have the patience to deal with some of the crazy issues that come up, and I salute the Board for being able to pull it off.

They welcome input and help. Just like you and me – especially me – they don’t know everything, and they acknowledge that fact.  Like Jeff Atwood’s joke about starting StackOverflow, “None of us is as dumb as all of us.” They want your ideas about improving the community, and they need your elbow grease to make it happen.  Take a minute to talk to one of the Board members with a suggestion, and you’ll either hear a reasoned response or you’ll hear a pencil scratching down a note to figure the answer out.

The PASS Board isn’t perfect, but it’s the best thing we’ve got, and it’s heading in the right direction.

That’s enough for my PASS recaps.  Next week, it’s back to our regularly scheduled SQL Server and community posts!


PASS Recap: Interview with Val Fontama

#SQLPass
0

Next up in my PASS Summit interview series is Microsoft’s Val Fontama. Val focused on the new Parallel Data Warehouse Edition of SQL Server 2008R2, formerly known as Project Madison. I was really excited about the prospects of this new edition, and I had a lot of practical implementation questions. Let’s see whether the answers pass this DBA’s smell test.

Parallel Data Warehouse Edition is Bundled with Hardware

Short story: you won’t be downloading PDWE on MSDN and building a lab.

PDWE will be sold as a Fast Track reference architecture solution made up of a SAN, storage servers, compute servers and a control node. Infiniband connects the servers together, which explains a little about why the servers are sold as a tightly integrated package. You’ll buy the whole shebang from one of these vendor partners:

  • Bull servers with an EMC SAN
  • Dell servers with an EMC SAN
  • HP servers with an HP MSA SAN
  • IBM servers with an IBM SAN

Normally, when I hear someone say, “You can only buy this along with hardware from these 3-4 server vendors,” I feel like I don’t really have choices. However, Microsoft’s marketing this solution as offering choices, so how do they pull it off? Well, remember that the competition is Oracle and Teradata, both of which sell their solutions on their own hardware. Compared to those guys, Microsoft is indeed offering choice here, even though the choices are limited.

Drawbacks of Hardware Bundles

One drawback of prepackaged hardware/software solutions, though, is that it can be difficult to do proof-of-concept setups for businesses to try before they buy. To accommodate this, some Microsoft Technology Centers scattered around the US will have Parallel Data Warehouse Edition packages already set up. Businesses will be able to bring their data warehouse data to the MTC and kick the tires on a server. Some hardware vendors may also have their own labs available to customers.

This drawback jacks up the implementation cost for customers. They’re going to want to test it before they buy, which means flying their team members to a Microsoft Technology Center and putting them up for a matter of days or weeks to build and test the solution. At the end of the engagement, the team will return, place a hardware/software order, and then repeat the process in-house.

Another drawback is that companies can’t cobble together a development or QA environment from leftover gear. They’ll probably need at least three separate PDWE environments:

  • Production
  • Development (if not QA as well)
  • Disaster Recovery

Companies might be more flexible on skipping a duplicated dev or QA environment if PDWE was exactly the same as pure SQL Server implementations, but it’s not. PDWE v1 is still bound by some of DATAllegro’s limitations (PDWE is the result of Microsoft’s DATAllegro acquisition.) In version 1, the control node still has its own query engine that builds its own unique query plans. Not all queries are supported, and not all features of SQL Server are supported. You wouldn’t want to build a solution against SQL Server and then just hope to upsize it to Parallel Data Warehouse Edition.

While we’re talking about what’s not included, be aware that PDWE’s licensing only includes the storage engine, not SSAS, SSIS, or SSRS. The hardware and software bought for Parallel is only for Parallel – your ETL work, analysis cubes, and reports will all need to be on separate hardware with its own SQL Server licensing.

SSMS and DBAs Need Not Apply

The most venerable of free tools, SQL Server Management Studio, isn’t relevant here because in v1, management will be done in DATAllegro’s management utility, not SSMS. Not that it matters much to you, because the production DBA won’t be responsible for PDWE performance diagnostics or tuning. PDWE is considered a sealed box – if you have performance problems, you have to call an engineer. The engineer will come out, review your setup, and decide what changes need to be made or what additional hardware needs to be purchased.

People who will love this: DBAs who don’t want to hassle with BI teams complaining about slow queries.

People who will hate this: me.

Even if I can’t fix the problem, I want to at least be able to look under the hood and learn how to do diagnostics. In my Perfmon & Profiler presentation, I talk about how SQL Server is like a car dashboard, and you need something more powerful than just a Check Engine light. With Parallel Data Warehouse Edition, I feel like I’m being chained into a Honda Civic with nothing more than a Check Engine light. I want a full suite of instrumentation. I want my DMVs. I want to be able to tweak knobs and make a difference.

I still love the idea of Parallel Data Warehouse Edition, and I can’t wait to play around with it. I’m just bummed that the closest I’ll get is looking at it through the glass walls of a Microsoft Technology Center.

Commodity Hardware: Not as Good as It Sounds

Technically, the servers involved are all commodity hardware – meaning, you could pick up the phone and call Dell to get another storage server or compute server shipped to you. However, to me, the real advantage of commodity hardware means that I can repurpose other hardware in my datacenter to adjust capacity reasonably quickly. If I need three more compute nodes for the holiday season, or if I need four more storage nodes to temporarily do a big import of past historical data, I’d like to be able to repurpose gear from other projects. This is the age of virtualization, when I can add capacity with the click of a mouse. Calling in an engineer sounds so 1998.

If you only have a limited subset of hardware vendors, and if you can’t pop the hood to tweak it, and if you can’t add capacity on demand (and no, calling Microsoft to send an engineer then order separate hardware doesn’t count as “on demand”) then why not just host it? I asked Val if Microsoft had any plans to offer PDWE as a hosted solution, especially since the current 10 customers on the preview program are all running their data warehouses out of Microsoft’s labs anyway. I didn’t get a solid answer there.

I’d been hoping that businesses could say, “We’re running our data warehouse right now on SQL Server, but we’re running into performance issues. Let’s make an investment in commodity hardware, reuse the SAN we’ve already got (possibly adding capacity), and move to Project Madison. We already know and trust SQL Server, we’ve got a full staff who knows how to manage it, and our apps work well with it. This is a no-brainer.” Instead, the migration to PDWE will require a pretty hefty expenditure, application changes, and a new hands-off management style. When faced with that choice, managers won’t find PDWE a no-brainer – they’ll put it through its paces against Oracle and Teradata. Those companies both have mature solutions, and PDWE is basically v1. Microsoft is going to have to win on price – something I found much more probable before they jacked up the prices on SQL Server 2008 R2 by 20-30%.


PASS Recap: Interview with Bill Graziano

#SQLPass
2 Comments

I interviewed Bill Graziano, the VP of Marketing for PASS, at the PASS Summit this year. Bill has a contagious upbeat excitement about him that makes him a good marketing guy. He started the Blogger’s Table at the PASS keynotes last year, and we started by talking about his accomplishments in marketing PASS.

Bill’s Recent Accomplishments

Bill is very proud (rightfully so) of PASS’s imagery and branding. PASS has built up a very recognizable look and feel that shows up across all of their marketing materials. The web site, Summit signage, emails, all of it has a repeated look. The imagery will be consistent from year to year at the Summit, and they’re extending it to the European events as well.

That repeatability was a theme I heard from several Board members including Wayne, Bill, Andy Warren, and Douglas McDowell. All of them were focused on putting solid, repeatable, measurable processes into place that could be consistent over time. The more day-to-day work that can be automated or turned into a checklist, the more the Board members can focus on long-term vision work instead of fighting fires. Heck, it’s no different than us DBAs adopting Policy-Based Management – done right, it frees you up to do the things you really enjoy.

Bill and the marketing team have built a strategy for how to deliver their messages, and they’ve built targeted messages for each month of the year, all driven to increase Summit attendance. They’re starting to repeat this year after year, and they’re working on finding other ways to reach new members. Historically, our first-time-attendee percentage has averaged around 42%, and he wants to continue to grow the number of first-time attendees. One of those ways uses social networking.

PASS and Twitter

A while back, Paul Nielsen got a @SQLPASS Twitter account, and over the last year it’s gotten more and more traction. Last year’s Twitter discussions about the Summit were real eye-openers for the Board, and they’ve been monitoring it ever since. This year, Twitter enabled real-time attendee feedback for even the most minor things (like a certain hallway needs more cookies) and helped PASS to react faster to attendee needs. Wayne’s story about including the keynote on the DVD is a great example.

Bill wants to broadcast the keynote videos live over the internet along with the Twitter #sqlpass stream like Microsoft does for the Mixx and PDC conferences. It all comes down to money – it’s free for one guy to do a home webcam, but it’s nowhere near free to do professional video the way PASS has done keynotes. The PASS keynotes have cameras, multiple live demos from different computers, slide decks, and more, and cost quickly goes up from there. I know somebody’s going to say volunteers could handle this, but I’d disagree. Even if we had free labor, we would need some expensive gear, and the Convention Center isn’t in the business of loaning that stuff out. Before we even think about letting volunteers try something like this, I’d ask the volunteers to prove themselves by doing a similar event at the regional level, like a SQLSaturday session with live video of multiple computers and speakers.

To me, PASS focusing on Twitter makes sense because PASS is going somewhere that the community’s already staked a claim. The community’s live and vibrant on Twitter, and PASS won’t be trying to bring people into foreign territory. It doesn’t cost a lot, doesn’t require building a new infrastructure, and doesn’t require volunteer time. PASS’s presence on LinkedIn is another no-brainer.

Some of PASS’s Recent Struggles

Unfortunately, a lot of PASS’s recent efforts (not necessarily marketing) haven’t been as successful. The wiki whitepaper and PASSPort projects have tried to get DBAs to go somewhere new and contribute new content, and they’ve failed miserably. (Bill’s face completely fell when I mentioned the word PASSport – it’s obviously a sore spot.) The vision for PASSport was a private Facebook with single-sign-on hooked up to the rest of PASS’s sites – but the reality just isn’t there yet. Nobody’s sure of what to do with it next, and finishing it requires money and time. Wiki whitepapers is even worse – the infrastructure is there, but nobody bothers to fill it out.

Given their limited resources, I asked why PASS had chosen to pursue a magazine (they’re relaunching the SQL Server Standard as a web-only publication.) Bill explained that sometimes what PASS does is based off the passion and hard work of a single board member. When someone wants something badly enough, they’ll make it happen. (This reminded me of Wayne’s remark about local chapters being built on the backs of heroic individuals.) In the case of the Standard, the primary driver was Andy Warren. Andy’s passionate about relaunching the magazine, and he helped make it happen. I asked why the Standard will succeed where PASS’s wiki whitepapers, another member-generated-content idea from last year, failed. He didn’t have an answer, but of course I shouldn’t have expected it – it’s not his endeavor. (I gotta ask Andy about that one.)

Bill echoed Wayne’s comments – PASS has no shortage of ideas, just a shortage of money and time. They need more HQ staff and more active volunteers. PASS can’t keep throwing new projects against the wall willy-nilly without a very long term plan because it runs the risk of not being taken seriously. Personally, I don’t take the Standard seriously because I don’t see a long-term future in magazines that pay contributors for content. Blogs are just evaporating that market. You can’t compete with free, especially if your goal is to diversify PASS’s revenue streams. There’s little money in paid content anymore.

PASS used to have forums, but they died off due to inactivity. They’ll be returning now that PASS members seem to be more active online. DBAs are solitary, Bill said, and they need a place to commiserate about their challenges. Forums might serve that need, although PASS doesn’t want to compete with other existing sites. I agree that PASS needs forums now that the community’s really starting to talk about PASS-specific things like voting, presentation selection, and PASS Summit topics. Bill says that as PASS matters more, people care more, and they talk more.

Bill’s New Role: Executive VP of Finance

I asked Bill what his first priority would be in his new position come January, and his response was pretty simple: ask people what they want. He intends to survey the daylights out of PASS members to find out what’s important to them in general, and what’s important to them about the Summit. Does the location matter? Does the social interactivity matter? Do the number of Microsoft-presented sessions matter? He wants to ask a lot of questions, and then set about delivering the kind of community people want.

Right now, PASS is a 2,000 person conference with a library of 40,000 reachable email addresses. He wants to plan for what happens in the future, and how we’ll be able to scale it all up to higher numbers. That’s the mark of a good DBA, too – picking metrics and trying to figure out how the system will react as those numbers increase. Bill asked some interesting questions, too, like why don’t we have a hundred virtual chapters, each with people who are really passionate about a specific narrow topic? How do we build up our virtual chapters to grow the same way our physical chapters have grown? I asked how he perceived the differences between virtual and physical chapters, and he didn’t have any preconceptions. He said they’re both needed, and an advantage of the physical chapters is that there’s a local job community with good recruiters. Virtual presence (LiveMeetings) are still hard now, but they’ll be easier in ten years. It’ll be interesting to see how things shape up.

As he leaves the VP of Marketing role, he wants to make sure that marketing is already a process. That way, the incoming VP of Marketing (Rick Heiges) can simply start marketing, rather than trying to figure out how PASS does marketing.

I asked Bill what it takes to succeed as a Board of Directors member. Bill’s idea of a blank-sheet, from-scratch board would include managers who can delegate tasks to people who have no need to do these tasks, and get them to do it. Talk about a tough role! You have to know how to use recognition and pride to encourage people to do a good job. I agree wholeheartedly, and I think future candidates would do wise to think about that. It takes someone with infectious enthusiasm like Bill’s to make the magic happen.

Next Up: Interview with Val Fontama

In my next PASS Summit interview post, I’ll recap my Project Madison conversations with Microsoft’s Val Fontama.