Sql-server – How to uninstall SQL Server 2014 Standard Edition without install media

sql serversql server 2014

I've had a copy of SQL Server 2014 Standard installed on my dev box as the default instance for a few years. I installed standard on my machine because I had a free license that I could use via my MSDN subscription. Now I want to uninstall SQL Server 2014 and make SQL Server 2017 Developer Edition my default instance. I tried to uninstall SQL Server 2014 via the standard Add/Remove Programs workflow but after asking me what features I want to uninstall it prompts me for the directory containing the uninstall media. Unfortunately I didn't save the SQL Server 2014 download package I got from MSDN, and I no longer have access to MSDN. I also checked My Visual Studio but it only goes back to SQL Server 2016. How can I uninstall SQL Server 2014 Standard without the install media?


Further background:

The whole reason I want uninstall SQL Server 2014 is I want to use the STRING_AGG function which is new to Azure SQL Databases and SQL Server 2017. To make setting up development environments easier we use the dot notation for our local environment development connection strings, for example our connection string is:

Data Source=.;Initial Catalog=<Database Name>;Trusted_Connection=True;Connection Timeout=30; 

The dot notation connects to the default database, and to my knowledge I can't make SQL Server 2017 the default database without uninstalling SQL Server 2014 first. If I can use the dot notation connection string to connect up to SQL Server 2017 without uninstalling SQL Server 2014 then I'd be open to that solution as well.

Best Answer

I was able to uninstall my SQL Server 2014 instance by downloading the SQL Server 2014 evaluation version*. In order to download the evaluation version I had to give Microsoft some contact details and then download two files. One file had a .box extension and the other had a .exe extension. The executable seemed to just unpack the box file. After the box file was unpacked I reinitiated the SQL Server 2014 uninstall process via the standard Add/Remove Programs workflow. Note that I never attempted to install the evaluation version. I just used the unpacked files to uninstall my existing SQL Server 2014 instance.

I chose to uninstall the database components but leave the shared components. Once the uninstall process started requesting the install media I found it would ask for various .msi files. Most of the time it would ask for a msi file with "loc" in the filename followed by a msi file without "loc" in the filename. Within the folder that I unpacked the box file the "loc" version of the msi files was located:

\1033_ENU_LP\x64\Setup\

and the files without "loc" in the filename were located:

\x64\Setup\

After the uninstall process completed I restarted my computer and was able to install SQL Server 2017 Developer Edition as the default instance. Interestingly during the SQL Server 2017 install process I was prompted for the install media for 2 SQL Server 2014 files, one of which was SQLWRITER.MSI. I don't know if this is because I didn't uninstall the shared components for SQL Server 2014. If this gives me problems in the future due to the time limited nature of the SQL Server 2014 evaluation version I used to uninstall my old SQL Server 2014 Standard Edition I'll update this answer.


Alternative approaches that were mentioned in comments that I didn't try, but seem like they'd be good fall back measures.

  1. The whole reason why I wanted to uninstall SQL Server 2014 was so I could use the dot notation to connect to SQL Server 2017. Scott Hodgin recommended I investigate a technique to make a named instance appear like a default instance. I didn't try this technique but judging by the votes its collected on StackOverflow it has surely solved some people's problems.

  2. Aaron Bertrand it seems has been in a similar situation as me in the past and wrote two different blog posts (first, second) on ways to force the removal without any install/uninstall media. Both blog posts used essentially the same technique of building a batch file to execute the msiexec command which forces an uninstall based on the GUID found in the registry. If you only read one of the blog posts I'd recommend the second one. It uses a little PowerShell script to build the batch file. While I didn't personally need to use this approach it was my next option. Also I'd like to give Aaron a hat tip for fighting through a pain point before a common man like myself encountered the problem, and for documenting a good solution to the problem for posterity.


*: Thank you to Ali Razeghi for suggesting this approach in the comments.