Setting Up a Virtualized Demo Environment

Disclaimer: I think this post will probably be more of a “memo to self” than be widely useful, but I wanted to jot down how I go about setting up my presentation environment, beyond just the basics.

First of all, I go through quite some lengths to set up an environment like this, so there has to be good reason for this effort. Many times, I prepare the demo environment so I can give the same presentation again without much additional effort. This generally pays off, as at many SQL Saturday events and Code Camps, I have given the same presentation. Beyond that though, being able to quickly snapshot a demo environment and reset it is very handy if I am preparing the demo or running through it for practice. I’ve included a screenshot below of my “fourth generation” demo VM below so you can see how many snapshots I have:

Demo Virtual Machine Snapshot Tree

Why VMware Workstation? There are plenty of other products you can use that might be just as suitable. I have the ability to benefit from academic licensing, which significantly reduces the cost (but even at the regular retail price, I would choose VMware). VMware has proven to be a very reliable product that delivers very good performance for virtual machines and offers some capabilities that I haven’t quite found yet in other products.


My (one and only) PC-device is a Lenovo X201 Tablet. It has 8 GB of RAM (the max for this type) and 512 GB of disk space (more on that below). The processor is a first-generation Intel Core i7. While at this time it’s not the latest-and-greatest, it packs plenty of power while providing excellent portability. I certainly think a Lenovo W520 mobile workstation is a great choice, but I don’t want to carry that into a meeting. My host operating system is Windows 7 Enterprise Edition, x64.

I run my virtual machines from a USB 3.0 hard disk drive attached to an ExpressCard USB 3.0 adapter. My laptop doesn’t have native USB 3.0 and going the ExpressCard route is about the only option. It doesn’t provide the full 5 Gb/s throughput USB 3 can theoretically achieve, but it does beat trying to run everything of the built-in drive.

Since I started using VMs heavily, I upgraded from a HDD to an SSD (Samsung 830 series 512 GB). Although I still use USB 3.0 for most demo purposes, when performance is absolutely critical, I will create an independent clone of the proper snapshot and move it to the SSD.

The Server Operating System

For some demo purposes, you’ll want more than one VM (perhaps a client and a server to show application deployment, etc.) Whatever your scenario may be, you’ll want to set up Active Directory so that authentication is made a lot easier. Some authentication scenarios may even require Active Directory (like FILESTREAM/FileTable requires Windows Authentication for streaming access). By setting up Active Directory, you’ll also need to set up DNS, which makes name resolution between different machines a snap. There are some additional networking requirements, which I usually address by adding an additional NIC to the virtual machine, connected to the “host only” network and assigned a static IP address.

I use Windows Server 2008 R2 Enterprise Edition. At first, I thought I could use the Server Core edition and thus save some RAM and even time updating. However, I am not that well versed in PowerShell scripting and I don’t want to have to install the administrative tools in my client either, so that was a poor choice. When I am setting up the domain controller, I allocated 2 GB of RAM. However, when I am not using it and it’s just running for authentication purposes, I only assign 1 GB.

Note that during demos, I don’t actually run the domain controller. Cached logons suffice most of the time to handle the authentication needs.

The Client Operating System

I choose Windows 7 Enterprise Edition with Service Pack 1 as the base client operating system. I install all updates, including the optional ones like the .NET Framework (which I need anyway) and Silverlight. With VMware Workstation, it’s trivial to use the 64-bit edition, so that’s what I use.


In order to ensure that the demo environment is stable and performs well, there are several settings I change in the virtual machines. I wouldn’t ordinarily make these changes for a production client or server instance.

  • Automatic Updates: turned off. I don’t want to see the popup during my presentation. I keep the machines up to date, but I want to control when updates are checked. The last thing one would want to happen is that you install an update the day before your presentation and it breaks something.
  • Defrag: schedule turned off. Defragmenting combined with snapshots yields no benefit, and could possibly even make the snapshot size grow thereby making things worse.
  • System Restore: turned off. That’s what VM snapshots are for.
  • Domain policy: don’t change computer account passwords. This is one I learned the hard way. By default, your client computer will change its Active Directory account password every 30 days. That happens behind the scenes and generally does not cause trouble… until you revert to a snapshot that’s more than 30 days old. The snapshot will have an old password and won’t be able to authenticate to the domain controller. You can reset the password from the domain controller, but that just causes your later snapshots to have mismatched passwords and you’ll go around in an endless loop resetting passwords.
    Here is how to disable the domain members from changing their passwords:
  • Domain policy 2: Allow shutting down computers without logging in. That way you can boot up your domain controller or any other server instance (which by default can’t be shut down unless a user with appropriate privileges is logged on) and shut them down when you’re finished without going through the possibly lengthy process of logging on to it.
  • Domain policy 3: Disable shutdown tracker.

Standard Software

There is some software that is likely to come in handy for any demonstration, so I keep the following on hand:

  • Notepad++. This happens to be my favorite text editor, although I’ve used others in the past too. Whatever your favorite one is, you should have it handy.
  • Microsoft Office: It doesn’t happen too often, but sometimes I need to work with the Office assemblies or just being able to edit a spreadsheet (like for an SSIS demo).
  • ZoomIt:  a must have when showing code. It has to be installed in the VM because the shortcut keys don’t make it to the host OS of course.
  • Anti-virus: This is a tough decision. I don’t really use the demo VM for casual web browsing or checking e-mail, etc. and thus could get away without installing anti-virus software. However, it also creates an environment that’s not very realistic (it’s easy to make things work without security software!). So I keep AVG Free installed on the VMs.

Keeping It All Straight

How can you keep all the snapshots straight? Naming and documenting the snapshots inside VMware is a must of course. In addition, I also maintain a Visio file that uses the Organization Chart stencil to keep track of the different snapshots. It allows me to plan a snapshot tree in advance, and then using color coding keep track of what I’ve already completed.

Let me know what you think, or ask a question...

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.