Project Watch: Microsoft 2008 OK, so choosing and installing the hardware - that was easy. I wish I could say the same for the software.
On the face of it all I had to do was install the beta version of Windows Server 2008, the production version of Visual Studio 2008 and the beta SQL Server 2008. Sorry, by beta of course I mean community technology preview. It appears that Microsoft has learned that renaming can be used to shed bad associations.
Microsoft encourages people to join its CTP programmes and puts a great deal of effort into the "welcome to our happy community" front end, encouraging us to play and telling us how valuable the company finds our thought-provoking feedback.
Which is fine. I just wish it would then put one tenth of the same effort into making the sites, the downloads and the installations usable. As it is you find yourself enmeshed in a Kafkaesque nightmare of: go here and download this, add this patch, and read these installation instructions - which are almost but not exactly like the instructions you downloaded the night before.
And if all of this sounds bad, remember that this is only the downloaded - installation is yet to come. There are three separate products, and I discovered that if they are to work together properly it is vital they are installed in the right order with the correct options selected. In three days I went back to bare metal five times before everything was present and correct.
Install across the ages
For instance, some installation processes will load a junior version of SQL Server onto the machine by default. We, of course, needed the grown-up one. With a CTP you're never sure, if you install the serious version on top of the toy, that the latter will be overwritten properly. Any problems you may have later could be laid at the door of an imperfect install so to exclude this possibility you go back to square one and start again.
Furthermore, SQL Server Management Studio needs Visual Studio 2008 whereas SQL Server Business Intelligence Development Studio requires Visual Studio 2005 - at least in CTP5. So you need both. This is not made at all clear on the CTP sites. Note that I'm not asking whether the information is there or not - I admit I didn't check every folder in every basement. It's doubtless there somewhere, but are these fundamental requirements stated clearly at the start of the download or installation instructions? No.
The entire CTP programme ends up feeling like an initiation ceremony: if you can't find your way through the maze, round the sleeping dragon and past Cerberus then you are not worthy. Having actually installed the stack and got it working, I feel that I deserve a T-shirt that says: "I survived the 2008 install, even if my sanity didn't".
The greatest service Microsoft could perform for its oh-so-valued, unpaid, beta testers is to get somebody to write, for each CTP release, a clear step-by-step guide to installing the stack from a standing start. Having done it five times I could have written it. (So why don't I write it here for you now? Because I did it first in CTP5, which has since been superseded meaning anything I'd written would be out of date by now).
Good. I feel better for that. And before you ask why anyone would go through that pain, the answer is for the killer functionality that is to be found in the 2008 stack. I've talked about the spatial data types (here, here and here), but another compelling feature for our project was the file streaming.
The joy of BLOBs
Binary Large Objects are here to stay. Whatever relational theory says about atomic data (and the arguments are complex and technically fascinating) users want to store images, documents, scans and other elements as part of the database. The bad news is that, by definition, BLOBs are large. Up until now, SQL Server users have had two choices - store BLOBs in the database itself, or store in the file system and point to them.
As it happens, our application has a great number of BLOBs. In SQL Server 2005 we tried both approaches. Storage in the database rapidly produced databases files that exceeded the 4GB limit on a 32-bit operating system. Storing the BLOBs in the file system was better but managing the pointers to the correct BLOB - in our case by bar codes - was time consuming and limiting.
File streaming is fabulous for our application. Essentially it means that, within the database, we behave as if the BLOB is part of the row. This makes the management easy. In practice, despite appearing to be in the database, the images are actually stored in the file system; however they can be retrieved very rapidly. The bottom line is that, within reason, we get the benefits of both and the disadvantages of neither.
There, I know there had to be SOME reason for enduring the CTP pain.®
Follow Register Developer regular Mark Whitehorn next time on Project Watch: Microsoft 2008 as he continues to roll out a spanking-new 1TB database for several thousand users on Microsoft's SQL Server 2008, Visual Studio 2008 and Windows Server 2008.