It's no secret that some virtual networks need a lot of physical RAM. For example, my virtual network, which consists of a Microsoft Small Business Server (SBS) 2003 virtual machine and a Windows XP virtual machine, needs 640MB of real RAM to run correctly. However, even though I have plenty of physical memory, I still frequently receive the not enough memory to start the virtual machine message when trying to start up the virtual network.

To fix this problem, I used to reboot the physical computer. The virtual machine then started up with no problems. Not being too happy with this time-consuming routine, I did a little investigating and discovered that instances of Microsoft SQL Server or Microsoft SQL Server Desktop Engine (MSDE) running in the host OS were at the root of the problem.

SQL Server and MSDE memory usage typically grows to meet demand and optimization needs. I've personally seen SQL Server memory usage increase from 30MB to 350MB in a matter of minutes on a system with 1GB of RAM.

Knowing that instances of SQL Server or MSDE were causing the not enough memory problem, I devised a faster way to solve it. The next time Microsoft Virtual PC 2004 or VMware gives you that not enough memory jolt and you know full well that you have spent all of next month's lunch money on RAM, try my quick fix:

  1. Look in Windows Task Manager to see which instance (or multiple instances) of SQL Server or MSDE is holding your RAM hostage.
  2. Make sure that no other people are using the instance. (They wouldn't be very impressed with you if you ended their session unannounced.)
  3. Find your SQL Server or MSDE instance in the Control Panel Services applet, then simply stop and restart it.

After you perform these steps, you'll find that your SQL Server or MSDE instance's memory usage has returned to the normal minimal startup memory usage level. You can then start up your virtual machines.