Solution

1. On closer inspection, I noticed the Exchange System Attendant was not running, and when I tried to launch it is started then stopped?

2. And the Exchange Information Store service was also not running, (that explains why the database won’t mount).

3. And when I tried to start that:

Error Windows could not start the Microsoft Exchange Information Store on Local Computer. For more information review the System Event Log. If this is a non Microsoft service, contact the service vendor, and refer to server-specific error code -2147221213

4. Fair enough, the Event Viewer yielded this:

Event ID 5003

Error
Unable to initialize the Microsoft Exchange Information Store service because the clocks on the client
and on the server machine are skewed. This may be caused by a time change either in the client or the
server machine, and may require a reboot of that machine. Other than that, verify that your domain is
properly configured and is currently online.

Well the clock on the Exchange server was correct, as were the clocks on the domain controllers they were both sync’d and in the same time zone.

5. The Exchange server is a VMware virtual machine, and even though it is not set to take it’s time from the host, the time on the host was incorrect.

6. Firstly set the time correctly on the ESX host, (below I’ve used an external NTP server, though you can just manually set the time).

7. Then restart the Exchange Active Directory Topology Service, make sure all the services come up correctly, and check the database has mounted.