Recently, I was tasked with doing an in place upgrade of SQL Server from 2005 to 2008R2. My environment was virtualized so I had the luxury of snapshot’ing the server before I performed the upgrade. This was fortunate, as it took me three tries to be successful.
My first attempt failed with the following, non-descript message:
“Wait on the Database Engine Recovery handle failed. Check the SQL Server error log for potential causes.”
Put that phrase into Google and you’ll get lots of hits. One of ’em mentioned that there could be problems when renaming the ‘sa’ account, for security purposes:
I was on to something, as I had disabled the ‘sa’ login from connecting remotely. I reverted to the snapshot, enabled the ‘sa’ account and ran the upgrade again. FAIL! With the same error message.
My next thought was possibly a problem with the account that was running the SQL Server service, reference this forum post:
Red herring, as I always use the SQL Server Configuration Manager to set the owner of my services. But, I set the accounts back to LOCAL SYSTEM or LOCAL SERVICE and ran the upgrade again. FAIL! With the same error message.
All this time I have been looking in the error logs for the smoking gun, but only seeing these:
1&2. Event ID 17182: TDSSNIClient initialization failed with error 0x7e, status code 0x3a.
3. Event ID 17826: Could not start the network library because of an internal error in the network library. To determine the cause, review the errors immediately preceding this one in the error log.
4. Event ID 17120: SQL Server could not spawn FRunCM thread. Check the SQL Server error log and the Windows event logs for information about possible related problems
These related to the deprecated protocol VIA, which I knew should not be enabled. I passed over them each time thinking that the messages were in response to the disabling of the service.
After reverting to the snapshot, I went into SQL Server Configuration Manager. The VIA protocol was enabled…
It appears that the previous two upgrades were successful, as on my third attempt when I received the “Wait on the Database Engine Recovery…” error and the failed upgrade message, I went into SQL Server Configuration Manager and tried to start the service manually. It failed. I then disabled the VIA protocol and the SQL Server service started up without issue. I queried the database engine to see it’s version:
and it returned
Microsoft SQL Server 2008 R2 (RTM) – 10.50.1600.1
Not wanting to take any chances, I reverted to the snapshot, disabled the VIA protocol, enabled the ‘sa’ account, left the service owners as my domain accounts and re-ran the upgrade. It completed successfully.