70-113, the Virtual Lab exam, gives Microsoft Certification new hope

We all know what's wrong with Microsoft certifications. The multiple-choice format means that people can cheat too easily, and over the years, the questions have often felt too specific, asking the kinds of questions that proper IT professionals just look up in Help systems like SQL Books Online.

To help address this problem, Microsoft started to come up with simulation questions. They were used in some Windows NT exams, and most notably for me (as I helped write them), in the core SQL Server exam 70-431. These were Flash-style applications designed to look and feel like the real applications. This is good, but they're not error-prone (people who have sat 70-431 will know of a particular error in one of the drop-down boxes), and they can only really test usage of the UI. Definitely an improvement on multiple-choice though, and when writing these questions, special effort was made to find things that would make cheating very difficult.

The biggest problem with simulations is that people have different ways to achieve their goals. "More than one way to skin a cat" as the expression goes. This is increasingly so with technologies like PowerShell coming into almost every area of server administration, and particularly applies to developer exams where the goal should be achieving something to satisfy a unit test rather than answering a particular knowledge question.

And especially for SQL Server. Most DBAs will use T-SQL to perform the tasks they do on a daily basis. Some will use Management Studio, others will use sqlcmd, or pre-created scripts. Recently, quite a few people will have started using PowerShell, particularly if they are already using PowerShell scripts to maintain Exchange and Windows. Therefore, testing becomes more difficult.

70-113 fixes this problem completely. Whilst I don't expect to have passed (it's an exam about Active Directory, which I only know a little about), I thoroughly enjoyed the overall experience. It asked me to configure a couple of servers according to a set of instructions, and then actually gave me connections to the machines. And they were complete machines. Obviously I didn't have Internet access, but I did have the Windows Help system. This alone would have got me past a few hurdles, as I could look up a few things that I couldn't quite remember.

With SQL Server, examinees will have SQL Server Books Online available, but that's like it is in the real world. If asked to create a particular type of trigger, you can remind yourself of the syntax for that. If asked to make sure that a backup uses the COPY_ONLY option, then you can look up where that goes. But this is the problem. In 70-113, the information provided seemed to give away a little too much. It explicitly told me what to use for many of the options, but I would've preferred to have had it describe something akin to "Make sure that the full backup you take doesn't affect the next day's regular differential backup" rather than "Use the COPY_ONLY option". This way, it can test the knowledge of the system, rather than whether or not you can find the appropriate checkbox.

The other area that I would like to see is a combination of question-answer and virtual lab. I'd like to be given the connection to the server, have to configure various things, but then also answer questions. "How much free space is there in this file?", "How many times has the index with IndexID = 3 on table X been scanned?", etc. This would not only test whether you know how to configure the system, but also whether you know how to find information – a very important skill which isn't really tested yet.

70-113 is definitely a step in the right direction, and I encourage everyone to give it a try (today is the last day you can register for it). Don't feel like you need to pass, just do the exam and provide comments about what you think.

Useful Wacom tablet

A couple of years I got a Wacom tablet. It was a gift – not really the type of thing I think I would've bought, but it was definitely nice to get. Since then, I've found it incredibly useful, and it's become almost a permanent fixture in my bag.

For a start, it's a great way of being able to ink up documents in ways that I can't do with my regular laptop (I don't own a Tablet PC, but inking is still useful from time to time).

tabletBut I also find that it's really useful when I'm teaching or doing any kind of presentation. There are often times when I want to draw some sort of diagram. Having a diagram pre-canned can be useful, but it's great to draw a diagram in front of the audience. Something about them watch you construct it helps them. If I have a regular whiteboard, then I'll use that, but if it's a diagram that I want to be able to refer back to, then I either have to find a part of the whiteboard which I don't want to use again, or else I can pull out my Wacom tablet and pull up Paint.Net. The pen is touch-sensitive, so it draws a grey line if I'm drawing lightly and a black one if I'm drawing heavier. And I can always switch back to one I drew earlier, and add to it, correct it, whatever. I can even email the diagram to students who want it (but that's not something I do regularly). It also goes really nicely with ZoomIt, which I use all the time to point out the detail in screens.

I do walk around a fair bit when I'm teaching though, and I notice it when I'm restricted (like when I'm using my Wacom tablet via a USB cable). My plan is to one day get one of the Bluetooth ones that Wacom have, and see if it's different. I won't be able to use it in aeroplanes, but I can imagine passing it to those students who don't want to get up to write on the whiteboard (which I do from time to time in my classes).

GO – repeating batches

GO is very cool. More so than you might think, and in a couple of interesting ways. This is the 6th tip from my TechEd Australia talk, from which you can see my slides and scripts in other posts.

In SQL Server, GO is the traditional batch separator. But what many people don't know (but has been mentioned around the blogosphere several times over the past year or so), is that you can put a number after GO to make the batch run repeatedly. I often use this method to populate lots of sample data into a table.

INSERT dbo.someTable (col1, col2)
SELECT col1, col2
FROM dbo.someTable;
GO 5

If my table starts with 10 rows, it will insert a copy of those ten rows, then twenty, then forty, eighty, and finally an extra 160, leaving me with 320 rows in my table. I guess I could have hit F5 5 times, but you get the point.

The fun side of GO is that it's a configurable option in Management Studio. Head into Tools, Options, and you'll see it under Query Execution.


Now, I would never condone changing this on a colleague's machine. If you do, then GO will start causing errors. Scripts that once worked will probably start failing (but not necessarily all – simple queries might just think GO is an alias).

But if you want to be really mean – and again, I would never suggest you do this to that annoying colleague who always leaves their laptop unlocked when they head off to lunch, even if they just live to frustrate every waking minute of your life – if you want to be really mean, you set the Batch separator to SELECT.

I'm sure your eyes have just dilated at the pure evil. And so they should. Now, even the most basic of queries will give the nastiest of errors. Restarting SSMS won't fix it. Rebooting won't fix it. You had better make sure you don't consider doing this to a colleague – if they realise (having searched online for "A fatal scripting error occurred. Incorrect syntax was encountered while parsing SELECT." and found this post), they may figure it out and it won't be good for you. At least make sure you're around to help them when they first panic.