SQL Server 2005 Database Snapshots

I recently had one of those “ahha!” moments with the new SQL Server 2005 Database Snapshot feature (not to be confused with the new transaction Snapshot Isolation mode). Dr Greg Low gave an overview of this great feature at the Perth .Net User Group last year, and I was going over some notes and e-learning material.

When you create a snapshot of a database, SQL Server 2005 efficiently creates a NTFS sparse file that initially contains effectively no data.

When you read data from the snapshot, SQL Server checks to see if the page the data resides upon exists in the snapshot. If it does, it serves the page from the snapshot; otherwise it serves the page from the original database.

How do pages appear in the snapshot? Each time a write is made to the original database, SQL Server checks if the page is already in the snapshot, if not it copies the page into the snapshot BEFORE the write is made to the original, thus preserving the point in time snapshot of the data. For some reason, I had wrongly assumed the page was copied after the write, but that just did not make much sense.

Database snapshots can be applied wherever you want to preserve a point in time state of a database. An excellent example of using a snapshot is point in time reporting. This is just one of many reasons why you should consider upgrading to SQL Server 2005.

Vault NAnt task

If you are using NAnt for your build scripts and using SourceGear vault as your SCC repository, please be aware that the default behaviour of the Vault NAnt task in versions 3.1.8 (and below) will overwrite any checked out and modified source files.

I have a single generic build script which I run on the build server and use on developer machines, so that a developer can simply type ‘nant’ at the command prompt in a solution folder to perform a complete build. (This is much quicker than opening the Visual Studio IDE to perform a build)

See the SourceGear Vault support site for details:

http://support.sourcegear.com/viewtopic.php?t=6188
http://support.sourcegear.com/viewtopic.php?t=5876&highlight=nant
http://support.sourcegear.com/viewtopic.php?p=25162#25162

This will be addressed in the next release 3.5 (ETA approx. July 2006)

More on NAnt soon…

User Interface Design Books

A while ago on the Stanski ausdotnet list, someone posted a question asking for book recommendations on User Interface design. Here’s my recommended list in no particular order:

The Design of Everyday Things : excellent common sense reference, great for getting into the mindset of good design, especially the ideas of visual clues (like push door with plate, pull door with handle – reminds me of that Farside cartoon of the “school for the gifted”!)

Don’t Make Me Think: A Common Sense Approach to Web Usability : Great for web, equally applicable to windows. Short, easy read, but valuable. A little gem of a book. If you design web sites, this is required reading.

About Face 2.0 and The Inmates are running the Asylum both by Alan Cooper: I would highly recommended “Inmates”, which discusses some real world examples of usability, and is a highly enjoyable read. You probably won’t agree with everything (I didn’t), but it gets you thinking…

Joels Spolsky’s book User Interface Design for Programmers (most of which (if not all) is available free on his web site Joel on Software)

Good News Everyone!

OK I admit it. I’m a recently converted futurama nut!

Last week I sat and passed 70-443, which completes my MCITP (Database Admin SQL Server 2005). Thanks to everyone who gave me encouragement. As exams go it wasn’t the easiest or hardest exam I’ve ever sat, but it did require some serious concentration for a couple of hours.

Considering I’m a developer, there is a slight irony that I should complete the DB Admin side first; just 70-441 remaining for developer certification.

If you’re in two minds about certification, my advice would be if you know your stuff, try to get your employer to pay for an exam or two and just sit them. What have you got to lose?

Recommended book

One of concepts I firmly believe in is continuous improvement. If you’re a software developer, you need to constantly improve and keep up with the software industry’s direction. One of the things I strive to do is read one book a month; they are not always software books and I don’t always manage one a month, but the point is the principle. I’m currently reading Bob Walsh’s “Micro ISV: From Vision To Reality”. I heard about this book from Joel Spolsky’s site and Eric Sink’s blog, both of which are worth reading if you’re serious about software development.

Whilst this book is primarily aimed at someone about to take the plunge and go it alone in the software industy, it has excellent advice for developers in general, and it is well written. It covers a range of topics from branding and selling to development infrastucture.

In the past I’ve applied the idea of branding even to in-house software applications and I think people take in-house applications more seriously when they can identify them easily.

Name Change

A colleague told me he thought my blog title of “Get the Bad News Early!” was too negative, and he got me thinking. Hence the name change. Whilst it’s not particularly important, I’ve changed it.

Both are important concepts in the Software Development Life Cycle (SDLC):

Early Detection means cheaper to fix.
Fixing the symptoms of a problem is unproductive (though common).

Much of the evolution of the SDLC over the last 30 years has been focused on detecting problems as soon as possible.

Tough Nut to Crack

I took the live 70-441 SQL Server 2005 exam on Monday. Didn’t pass; I got exactly the same score as in the beta, despite some serious study. I’ve spoken to several people here in Australia and it seems this exam is harder than the other SQL Server 2005 certification exams. Looks like I have some more learning to do!

Whilst deep down, I value on the job experience more than a specific certification, I think going through the certification process is good because it forces you to evaluate aspects of a technology that you might have otherwise been unaware of. Even if 6 months later, you’re not an ‘expert’ and have perhaps forgotten some of the details, you are still in a better position to decide whether those features are useful in a particular scenario.

User Error

Ahem! Due to user error (i.e. me) it would seem I booked the 70-441 exam for next Monday (29th May).

I’ve been hearing people say that this particular exam is quite strict and people have been raising their concerns of its difficulty with MS. I thought the reason they ran a beta exam program was to gather those statistics?

Anyone got any comments on 70-443? I’m intending taking this one in a week or so.

One MS exam short of MCITP developer…

Spent most of the weekend so far, going over material for the Microsoft SQL 2005 developer certification 70-441, which I’ll be sitting tomorrow morning. The training material for this is a bit thin on the ground still (Victor Isakov had a book coming out about now but I believe this has been delayed).

Darren Gosbell has a list of resources on his blog here.

I’ve taken this exam once in beta, but just missed out. Need to pass to complete my MCITP database developer, and then just one more exam 70-443 to complete the MCITP database admin.

I have to say that the more I work with SQL Server 2005, the more I love it! It really is a great product.

Here we go, here we go…!

OK. I finally beat the laziness, and published a blog. Whether I’ll keep up the posts remains to be seen.

What’s with the title? It seems a bit negative. What does it have to do with software development?

In short: Everything!

The sooner you discover a problem (or potential problem), the cheaper it will be to fix (or plan to overcome it). OK I’m probably preaching to the converted, but I needed a title!