Home > Registry, VMware > VMware VirtualCenter Server service VPXD fails to start

VMware VirtualCenter Server service VPXD fails to start

I have been using VMware ESX for quite a while now and while the technology is a brilliant concept every now and then I find a small problem or pitfall that always seems to bug me! I have a 3 node ESX cluster that I implemented in my work office and was working on configuring a 5 node cluster when I noticed an issue with VCenter (formally Virtual Center) that had occurred in both environments. It seemed that for no apparent reason when I rebooted the server running VCenter the 'VMware VirtualCenter Server' (or 'vpxd' windows service name) service failed to start. This was kind of annoying, more so knowing that the new 5 node setup was going to a datacenter where people would be less likely to spot that it hadn't started after the reboot of the server running VCenter!

After a quick look in the application log on the server I could see that there was an error reported by the SQL instance (I use the SQL Server Express edition default installation for VCenter installations) just before the vpxd service had also logged an error. The first error appeared to be related to the vpxd service starting and establishing a connection to the SQL database. During the connection the authentication had failed and so the vpxd service had failed to start as per the second error.

vcenter-mssql-error.png

vcenter-service-error.png

The immediate reason for this happening seemed to be because during boot up the vpxd service was attempting to start before the SQL service, except the vpxd service was almost relying on the SQL service having started before so that it could establish a connection to the SQL database. Without the SQL service starting prior to the vpxd service there was no way that the connection could be established.

I found that the workaround to this issue is to make the vpxd service dependent on the SQL Server service so that it waits for the SQL Server service to start before it attempts to start itself and a connection to the SQL database is established.

The easiest way to do this is:

1) Establish the service name of the SQL instance for VCenter. If you have installed VCenter using SQL Server Express edition then by default the name is 'MSSQL$SQLEXP_VIM'. If you have used a different version of SQL Server you will need to open the computer management console services snapin (start -> run -> services.msc) and find the service called SQL Server. Right click on the service and select properties to view the service name and make a note of it.

vcenter-service-name.png

2) Note: You can download the following regkey changes for SQL Server Express - HERE

Open regedit (start -> run -> regedit) and navigate to the following key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vpxd

Open the Multi String value for DependOnService by double clicking on the value. On a new line add the service name of your SQL instance. I added the following on a new line because I use SQL Server Express edition:

vcenter-regkey.png

3) Close the registry editor, open services.msc again and check that the VMware VirtualCenter Server service is now dependent on the relevant the relevant SQL Server service.

vcenter-dependencies.png

Since making the vpxd service dependent on the SQL Server service I have not had a problem rebooting a server running VCenter where the VMware VirtualCenter Server service fails to start.

Categories: Registry, VMware Tags: ,
  1. Jay Eklund
    April 22nd, 2009 at 20:44 | #1

    Excellent quick easy fix James, thanks.

  2. J. Santiago Scarfo
    December 7th, 2009 at 19:29 | #2

    Great fix James, Thanks!

*

code