Alexander's Blog

Sharing knowledge with the global IT community since November 1, 2004

How to Fix the Error “Could not find the Database Engine startup handle” in SQL Server 2016, 2014, or 2008

/
/
ad-mania

When I decided to install SharePoint 2016 IT Preview I figured I should install it on a Windows Server 2016 Technical Preview, along with SQL Server 2016 Community Technology Preview (CTP). I bet you didn’t realize there are so many different names today for what used to be simply referred to as “BETA” back in the good ol’ days. Actually, we used to  have Alpha, Beta, Release Candidate, and the Final product. But that was then, this is now. If you are really curious as to why Microsoft decided to use terminology like Community Technology Preview, visit this MSDN blog post.

Windows Server 2016 Technical Preview installation was simple but when I started to install SQL Server 2012 on Windows Server 2016 Technical Preview in Hyper-V I ran into some issues. No problem, I decided to install SQL Server 2014 but it too had some issues so I decided it makes sense to install SQL Server 2016 so let’s try that. I have installed SQL Server tons of times on different versions of SQL Server over the years and didn’t really had any major issues that I wasn’t able to resolve. When I started to run into some errors during SQL Server 2016 CTP2.3 install, I decided it better fix these issues because the 2016 version will be the most compatible version with Windows Server 2016 and SharePoint Server 2016. All these products are still in beta so I had to be patient and fix these errors before I start to install these products for my business clients down the road. Here’s the first problem and a solution. I will document the second problem and a solution in my next post.

PROBLEM

During SQL Server installation, you may run into the following error:

Could not find the Database Engine startup handle

CouldNotFindDBEngine

The word handle is misspelled in the above screenshot. Microsoft should be excused because at the time I wrote this article, SQL Server 2016 was still in beta. The screenshots in this article are from SQL Server 2016 CTP2.3 running on Windows Server 2016 Technical Preview. I have experienced this error only in SQL Server 2016 CTP2.3 but you may also experience this error in SQL Server 2014 or 2008.

Here’s a solution that I found on Microsoft TechNet Wiki. There’s a lot more information in the wiki post. Here I am just documenting the steps in detail that I used to make the recommended change in the post.

SOLUTION

  1. If you have installed SQL Server then you should remove it completely through the Control Panel and restart the server. If you need help, visit this wiki post for more information.
  2. When you get to the Server Configuration page as shown below, you will notice that the SQL Server Database Engine service is using the account NT Service\MSSQLSERVER.
    ChangeDBEngineService
  3. Change the account from NT Service\MSSQLSERVER to NT AUTHORITY\SYSTEM by clicking on the drop-down box, selecting browse and then typing SYSTEM in Select User, Computer, Service Account, or Group window in Active Directory. Click OK to accept the new account.
    SYSTEM-account
  4. Your screen should look similar to the screenshot below.
    NT-Authority-System
  5. Continue on with the installation as you normally would.
  6. You should no longer receive the error Could not find the Database Engine startup handle during installation.

Best Practice: You should restart the Windows server after SQL Server installation is complete. Yes, even if you are not prompted by the system to restart the server you must restart the server after installation of SQL Server, SharePoint Server, etc. or else you may run into problems.

The wiki post recommends that after the installation is complete you should change this account back to a low-privileged domain account that will run the SQL Database Engine service. If you are still experiencing the error, please visit the wiki post because it has a lot more detail, references, links to forums, etc.

UPDATE: January 17, 2017

To change the account back to a low-privileged domain account, as mentioned above, follow the steps in this section. The domain account can be just a regular domain user account, not an administrator but it may need special permissions in SQL Server (not Windows Server, or Active Directory Domain). For example, the NT Service\MSSQLSERVICE and NT Service\SQLSERVERAGENT both have sysadmin permissions on the SQL Server by default, which means your domain account used as a service account will require these permissions on the SQL Server.

WARNING! You should only change the SQL Server service account if you are comfortable working with the SQL Server and understand how SQL Server account permissions work. If you are not sure what type of permissions are required for your SQL Server service account in your environment, I would recommend you don’t change the service account and contact a qualified SQL Server consultant or expert. Also, keep in mind that restarting the SQL Server means you are making the SQL Server unavailable until the service is started again. Although this is usually a short period, it is best that you perform this step outside of normal business hours.

  1. Backup the SQL Server, including all databases.
  2. Go to the SQL Server Configuration Manager.
  3. Click SQL Server Services.
  4. In the right-hand pane double-click SQL Server (MSSQLSERVER).
  5. Click Browse and make sure the location is set to your domain, rather than your local SQL Server. If not, click Locations, select Entire Directory, and then click OK.
  6. Type the name of the domain account that you want to use, click Check Names and then click OK.
  7. Enter the password and then click OK.
  8. You will be prompted to restart the SQL Server service. Click Yes to restart the service.
  9. Your SQL Service account is now changed to a domain account.

Copyright © 2015 SeattlePro Enterprises, LLC. All rights reserved.

  • Facebook
  • Twitter
  • Linkedin

46 Comments

  1. Thanks a lot for the solution.I tried to resolve this issue by using many solutions from internet but this solution resolved my issue in the end.
    Post was really very helpful and bang on solution to my problem.

  2. SQL is the best but the installation process is piece of garbage. I have tried everything and still getting the error.

  3. @William. Have you followed the instructions listed on the wiki page that I have mentioned at the end of this article because it has a lot more detail, references, links to forums, etc.

  4. After two days of installing, uninstalling and resintalling, this one tip did the trick. Now I can actually start using the database.

  5. Fantastic – I have installed, deinstalled and reinstalled multiple times without success until I saw this advice. All is working ok now.

  6. Hi All,

    I’ve got similar problem with my SQL Server 2014 installation. I’ve checked many forums and blogs. Nothing helped. Solution was ridiculously easy. I had SSL disabled in registry.

    After enabling it, everything is fine.

  7. Awesome! After a struggle of many days , finally I have installed SQL management studio. Thank you. Thanks a lot. GOD BLESS YOU 🙂

  8. Many, many thanks to you. I was too unhappy from couple of configurations and install/uninstall SQL Express 2014 until I found your description.

    If you come to Prague at any time – let me know. You just reserved a couple of beers from my pocket!

    Thank you again.

    Martin

  9. After reading SO many articles and trying so many different things–yours was the one that finally helped me out after hours of troubleshooting. Thank you for documenting this fix.

  10. I was doing a inplace upgrade from 2008 R2 and got the same error message – in my case having TraceFlags in the startup parameters in 2008 cause this same issue. It is because of the difference in how SQL 2014/2016 handles traceflags.. Remove them from the startup parameters before you start 😉

  11. I am so exited after a day of install and uninstall after 3 time downloading of ISO this solution worked. Thank you so much for sharing this.

  12. This posting really helped to get SQL Server Express 2016 installed after many many attempts, but now port 1433 SQL servers Listening port is not available. At the end of your article, you said “The wiki post recommends that after the installation is complete you should change this account back to a low-privileged domain account that will run the SQL Database Engine service.” I have not done this so perhaps that is the problem. My question is, how do I do this change of accounts back? Can’t find it anywhere. Please help.

  13. @Gary. I have added the instructions in an updated section at the end of this article on how to change the SQL Server service account to a low-privileged domain account.

  14. Thanks, for the article. This worked for me as well while installing SQL Express 2016. I had tried multiple times thinking it was something with my custom settings during install, but what you have documented corrected my errors. It was installed with my custom settings without error.

  15. The same way I have tried but still getting the same error. Could you please provide any other possibilities?
    Thanks,
    Alina

  16. Hello Alexander,

    Thank you for that article.
    We faced the same situation on one single machine after fine installing SQL Server 2016 Express on 15 other machines…
    We already changed the SQL service account to bypass the issue…
    But, we’d like to know what goes wrong with the default SQL account on thaht particular machine.

    Any idea troubleshooting the default account ?

    Geoffrey

  17. @Rohit: I would suggest going through the above comments to see if there’s some useful information that can solve your issue. For example, one reader had mentioned that TraceFlags in the startup parameters were causing the problem. Also, visit the wiki page referenced in my article. It has more details, references, and links to forums that may help you.

Leave a Comment

Your email address will not be published. Required fields are marked *

This div height required for enabling the sticky sidebar