While trying to start SQL Service for a named instance, I got an error message related to event id 26 – Your SQL Server Installation is Either Corrupt or has Been Tampered With (Error Getting Instance Name).
Here is the text of the error which is related to event id 26.
Windows could not start the SQL Server (SOFTWARE) service on Local Computer. Error 1067: The process terminated unexpectedly.
When I checked event log I found following error messages:
Error Messages 1: The SQL Server (SOFTWARE) service terminated unexpectedly. It has done this 4 time(s).
Error Message 2: Application popup: SQL Server: Your SQL Server installation is either corrupt or has been tampered with (Error getting instance name.). Please uninstall then re-run setup to correct this problem.
The error gives hints about the issue, but I was not very sure what I should do. I search on the internet and found that we get Error getting the instance name when mapping between instance ID and name is incorrect. So, I looked into registry key
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL
As we can see above, the SOFTWARE is mapped to MSSQL13.SOFTWARE. so I looked for this key
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.SOFTWARE
Interestingly, I found that someone renamed MSSQL13.SOFTWARE to MSSQL13.SOFTWARE1 which was causing the issue.
As soon I renamed the key back, the issue was resolved.
Another way to find a cause of such errors would be to start SQLServr.exe via command prompt and you might get a more meaningful error.
I don’t know who renamed the key and that is still a mystery.
Reference: Pinal Dave (https://blog.sqlauthority.com)
2 Comments. Leave new
I know I have seen other postings from you that touch on the “SQL Server installation is either corrupt or has been tampered ..” message. I ran into this problem when dealing with a login trigger that crashed my SSMS while I was working on it. That error comes up for any number of reasons. Here are two that I ran into when using sqlservr.exe to start an instance from the command line.
a) you might be using the wrong sqlservr.exe for the version that the instance needs
b) you might have incorrectly provided the name when dealing with a named instance. Remember to leave out the hostname portion.
That second one is a pain because sqlcmd wants hostname\instancename but sqlservr.exe wants just instancename. Can put one in panic mode when customers are banging on your door while trying to fix it. There was nothing corrupted.
makes sense. thanks for sharing. that’s why I prefer “NET START MSSQLSERVER” or “NET START MSSQL$INSTANCE” to avoid both of them.