SQL Server 2008: Betrayal and Broken Dreams

I was excited when SQL Server 2008 first came out.  A new version!  While it didn’t promise to change the world (“New Form Of Energy” marketing campaign aside), it did offer a few significant upgrades:

  • Compression, for tables, indexes, and backups, is available.  No more zipping backups!
  • New Spatial data types. No more weird math converting latitude and longitude to distances!
  • Full text indexes are (finally) saved in database files.  That means they’ll be included in backups, and moving databases should be much easier: no more rebuilding full text indexes all the time!
  • New FILESTREAM data type.  Store large binary streams in the file system, but let SQL Server manage it.  Finally, using SQL Server as a storage engine for serious content is feasible.  This is basically the best of both words… almost a developers-only version of WinFS.
  • XML Improvements.  If you work with XML columns, there’s some candy here for you.
  • Reporting Services can export to Word files.  Finally!  I’ll avoid the obvious criticism that this should have been there from day one and just be grateful we have it now.  Exporting to Excel is better, too.
  • Reporting Services no longer requires IIS.  Thank God!  But you can still do it this way if you want.
  • Evolutionary improvements to all the management and development tools.
  • Another few dozen bullet points that I’m sure matter to some people.  But Partition Aligned Indexed Views just don’t make me hard these days.

So, we should be happy, right?  New toys to play with, improvements right across the board, and all that?

HELL, NO.

There are at least three huge problems with this new release.  Each one of them has fucked me over good and hard when I least expected it.  If you can get around these problems, it’s a great release.  Don’t get me wrong: I’m not saying it’s all bad.  I’m not saying you should run from it like Yersinia pestis.  I’m not saying I’d rather fondle stinky hooker feet all night than wrestle with this piece of shit for just one more hour.  And I’m sure as hell not saying any competing product is better.  It’s a definite step forward.  But why, oh, why, Microsoft, must you bust my balls so?  I just wanted to love you!

I have too much hatred for one entry.  I must pace myself, and let my rage out over several days.  Only this manner will I truly be at peace.  So for now, know the unholy triad of monstrosities lurking in this delightful new offering by gist alone:

  1. Installation is a horror of over-engineering, redundancy (the bad kind), and practical humour.  Allocate 6-8 hours.  And pray to Zeus you have a fast Internet connection, because you’re gonna need it!
  2. SQL Server 2008 is completely backwards-incompatible with SQL Server 2005.  You can move up, but not down.  Moving a database from SQL2008 to SQL2005 is impossible.  There is no way to accomplish this task; you must rebuild your database.  Attaching your SQL2005 database to SQL2008 will bork it instantly and without warning.  If you have SQL Server 2008, and your client has SQL Server 2005, you might as well be running MySQL.
  3. Certain previously-innocent actions create new (often empty) database files, without warning, and (by default) in the Program Files folder.  If you lose these files, your database goes straight to the bit bucket.  So, if you attach your 15GB database by copying the .MDF and .LDF files, enable full-text indexing, detach your database, and take your 15GB home with you, you’re now the proud owner of 15 GB of uselessness.  Your database is gone forever because you didn’t also grab that 2 KB file SQL Server generated automatically and placed in your Program Files folder.  Whoops.

I’ll have more to say about these three issues later, including the best ways to work around them.  So long as you know what you’re getting into, nothing here is all that bad.  But please, Microsoft, don’t ever, ever do this again.  Neither my heart nor my balls could take it.

No comments:

Post a Comment


Copyright © 2010 Paul Guenette and Matthew Sleno.