In my previous life I was a production DBA which meant my primary responsibility was recovery. I also took my job role to be that of a general SQL Server expert. I stayed general because no one person can possible be an expert in every facet under the SQL Umbrella. A few years ago I had my team start to specialize in different areas, so that we would have some deeper expertise in something like SSRS, but our primary responsibility remained with being able to recover. We were never asked to take part in database design, we were never asked to take part in anything, really. We were just told to fix things when they broke. That meant we needed to know a little bit about a lot of different things.

This morning I was reading up on row versioning (what? like you weren’t doing the same?) over at http://msdn.microsoft.com/en-us/library/ms345124.aspx and I came across this statement:

“The database administrator for a system is responsible for evaluating the impact on the system and applications of either of the row versioning–based transaction isolation schemes. The developer is responsible for understanding how to exploit the new isolation-level behaviors to build better applications.”

Wait a minute there…the developer is responsible for something? Do they know this? Has anybody told them yet?

So, let’s back up for a second here. Go and read a recent article by Brian Moran titled “Is There a Shortage of SQL Server Experts”. The title suggests one thing, “experts”, but then shifts to talk about a shortage of DBAs, and I’m not sure he meant to use that label but maybe he did.

Well, what about the developers? Shouldn’t they be experts as well?

My experience has been that the DBA is expected to be the expert in the shop, and that they need to play the Superhero role and come in at the 11th hour to explain everything in depth in terms that everyone (even managers) can understand. That ain’t easy. Worse still is when a developer spends eight months building something that doesn’t scale beyond the 100 rows they “tested” against and when you tell them they need to rethink their design you are met with something like “stop blaming my code, it isn’t the code!” (dude, yes it is, now sit down and shut up, I’m the expert here.)

So, who does what in your shop? Do your developers know that they should have an understanding of what row versioning is, and how it can be applied to build better applications? Or are you expected to know such concepts and to teach it to developers as well?

There are always a lot of new things to learn with SQL Server, but who in your shop is taking the time to stay on top of everything?