December 20, 2010 | SQL Server

The curious case(s) of the Microsoft product naming department

A long time ago, in a galaxy far, far away…

Okay, it was here on earth, a little over 5 years ago.  With SQL Server 2005, Microsoft introduced a very useful feature called the DAC.  DAC stands for "dedicated administrator connection"… you can read about it here, but essentially, it allows you a single connection into the server with priority resource allocation – so you can actually get in and kill a rogue process that is otherwise taking over the server.  On its own this was a fine acronym choice, but I don't think it was visible enough to some other teams within SQL Server – well, one team in particular.  We'll come back to this in a minute. 

"PB & J & D & M & F"

In SQL Server 2008, Policy-Based Management (PBM) was originally introduced to us as Dynamic [edit: Declarative] Management Framework (DMF).  This doesn't really have a lot of impact, as it was never publicly released as DMF (at least not that I remember), but the change was made late enough into the cycle that all of the namespaces around PBM still contain the old acronym, for example Microsoft.SqlServer.Management.DMF.PolicyStore.  This tends to invoke questions about what on earth DMF means – and a lot of people think it must have something to do with Dynamic Management Functions.  Which don't actually have an official acronym, as far as I know.

"DATETIME_WHAT?"

SQL Server 2008 also introduced a new DATETIME data type which they called, for lack of any creativity whatsoever, DATETIME2.  I suspect that the person in charge of that one came over from Oracle, and that was the first decision he/she was forced to make.  Many of us clamored for a better and more meaningful name, following established conventions (they didn't name BIGINT "INT2", did they?), for fear that we were only a few versions away from DATETIME3, XML2 and VARCHAR(MAX2).  But alas, the horrible name stuck.

"DAC, part too much"

In SQL Server 2008 R2 (in combination with Visual Studio 2010), they introduced a new development concept called a DAC.  Does DAC sound familiar?  It should; I just talked about it a few paragraphs ago.  But that was a different DAC.  Yes, you heard me right.  THIS type of DAC (which stands for Data-Tier Application) allows you to package scripts and database changes together to ease deployment of complex database changes.  You can read more about the DAC (and its associated DACPAC – a DAC package, of course) at MSDN.  I complained about this quite loudly during the R2 beta, but it fell on deaf ears.  Even Brent Ozar makes fun of the fact that DTA was already taken – not that that would have been a better acronym, obviously.

"Please help us name a server-less SQL Server"

Now with SQL Server Denali, they are struggling to come up with a name for their new "server-less SQL Server" feature, which will be included in the toolset currently known as "Juneau."  Some background (lifted directly from the survey they're pushing today):

Thank you for your help in naming the new “server-less” feature.

What is it?
The SQL Server team is working on a new “server-less” execution mode of the SQL Server Database Engine. Designed to improve the user experience for database developers, Web developers, and Independent Software Vendors working on database code or embedding SQL Server into their applications, the improvement eliminates the need to install, configure, and manage a full server instance of SQL Server.

How it works?
In this execution mode, a SQL Server process spins up with your application or development tool – all you need to do is specify the right connection string. It runs as a user process and not as a service (it does not require a service to be installed and configured). In this mode, SQL Server will only accept local connections, and it will shut down automatically after the last connection is closed.

(I can't resist pointing out how the two headlines were obviously written by two different people… the second should be "How does it work?" not "How it works?" – but that is just my anal retentive grammar gestapo getting the better of me.)

Now, I've seen a demo of the feature, and it does appear to be quite useful – though I don't think it has ever been all that hard to install, configure and manage an instance of SQL Server Developer Edition.  Anyway, it will allow you to develop your database locally, targeting whatever edition you like.  So I was surprised when I got to the next page of the survey, and these were my options:

 

So, essentially, they're going to call it "SQL Server Express <something>," you just get to tell them what the <something> should be (or fill out "Other" of course).  This makes very little sense to me.  It either means that it has the same feature limitations as SQL Server Express Edition (so you can't really develop all of the features for any edition, such as partitioning for Enterprise), or it means that the limitations aren't there but people will be led to think that they are.  In either case, it is a horrible name at best (if the latter is true), or a useless feature at worst (if the former is true).

Please feel free to take the survey here.  My suggestion was "SQL Server Local Edition" – this implies what it is and, more importantly, does not imply what it isn't.  Unless of course the intention is to truly only offer developers the features from Express Edition.  In which case, one of the 7 names above is quite likely a better choice.

"It is not a TIMESTAMP!"

Yes, I pictured Arnold Schwarzenegger reading that headline.  This is my favorite of all horrible naming blunders in the history of SQL Server.  This data type violates ANSI standards and has absolutely nothing to do with date or time – in fact an alias type was introduced called ROWVERSION so that people would stop thinking that there was any correlation to a clock.  Yet I can't recall how many times I've answered sad users who want to know why they can't use a simple WHERE clause to find all the rows with TIMESTAMP > yesterday.  In 2007 I opened a Connect item (and I believe I had one in Ladybug, the bug reporting system that pre-dated Connect) to address the deprecation of this type:

http://web.archive.org/web/*/https://connect.microsoft.com/SQLServer/feedback/details/274333/

And in the 2008 version of Books Online, they quietly announce in the rowversion (Transact-SQL) topic that the "timestamp syntax is deprecated."  Hooray!  Except that to this day (and including the Denali release), sys.types still uses TIMESTAMP, not ROWVERSION.  And if you create a table using ROWVERSION syntax, then script it out using Management Studio, the resulting script will contain the name TIMESTAMP.  So, two full versions since the deprecation announcement (and at least four full versions since they admitted their blunder), and not a line of code appears to have changed.

13 comments on this post

    • Jonathan Kehayias - December 21, 2010, 3:52 AM

      My vote for Other: SQL Server Local Edition has been submitted.  🙂
      What can I say?  I am a follower.

    • Simon Sabin - December 21, 2010, 4:16 AM

      My understanding is that it is express but you don't have to install the service part of it. So for ISVs that need to deploy 1000s of them you don't have to install 100s of express editions.
      SQL Server InProcess – not sure if thats true
      SQL Server Service Free
      SQL Server Instant

    • AaronBertrand - December 21, 2010, 4:44 AM

      I don't think it's for ISV deployment Simon.  The goal is to provide a local development environment without true instance management issues, and is supposed to support any edition as a target.  So if it's "Express" doesn't that imply that you can only develop using the feature set supported by Express?

    • Kalen Delaney - December 21, 2010, 8:01 AM

      It's nice to read an amusing post at the end of a long day. 🙂
      I always think of the "other" DAC as Data Access Components.  And then of course, as you mentioned, we don't officially have DMF for Dynamic Management Functions, as DMV really stands for Dynamic Management Objects which includes both Views and Functions, since we couldn't call it DMO because that name was already taken! When I heard that explanation, I almost said "Why the F*** not, since you overload so many other TIAs!"
      Thanks
      Kalen

    • Kalen Delaney - December 21, 2010, 8:06 AM

      Oops, I meant TLAs ….

    • AaronBertrand - December 21, 2010, 8:19 AM

      Glad you enjoyed it Kalen!  I've always found talking about DMVs frustrating because none of the acronyms work.

    • jamiet - December 21, 2010, 12:08 PM

      Want to add another to the list?
      Similiar to all PBM/DMF problem, all of the APIs for SSIS are in the Microsoft.SqlServer.Dts namespace!! The reason for this was that the product was originally intended to continue with the old DTS name, by the time the decision had been made to change it to SSIS all of the APIs were already in place.
      JT

    • dmmaxwell - December 21, 2010, 2:47 PM

      Voted: SQL Server Aether 😛  (j/k)

    • Jeremiah Peschka - December 21, 2010, 4:26 PM

      My vote is for SQLite… http://www.sqlite.org/

    • Karen Lopez - December 21, 2010, 4:58 PM

      As I tweeted yesterday, I wonder if anyone took the time to look at the acronyms these names would lead to?

    • Koen Verbeeck - December 27, 2010, 9:40 PM

      Well, I filled in SQL Server Local Edition in the survey, because it really does make sense. And I voted for your issue at connect 🙂
      Ah well, Microsoft really does suck at giving names. If they invented the iPod, it would have been called: Microsoft Portable Music Device (PMD) 2005 eXtreme Edition.

    • Linchi Shea - December 30, 2010, 7:21 PM

      SQL Server Local Edition works. If it is strictly for SQL Express, I'd pick SQL Server Express Local Edition. But then I think Server-less SQL Server is actually most descriptive, though it sounds odd. Can you say computer-less Apple computer or coffee-less Starbucks coffee?

    • RIm - January 11, 2011, 1:15 PM

      SQL Server Portable

Comments are closed.