Why is Uninstalling SQL Server Such a Pain?

A developer friend of mine recently, upon the briefest mention of SQL Server, descended unexpectedly into a rant about the pain of getting rid of the blasted thing. I was somewhat taken aback. “Surely”, I protested, “the uninstall button is easy enough to find?” He shot me a pitying look; apparently it’s not as straightforward as I imagined it should be!

He had previously installed on his laptop an early release candidate of SQL Server 2016, eager to take try out a few things on the train into work. He’d rather forgotten about it and then several months later got into a tiresome mess trying to uninstall it. Having fought gamely through a series of unremitting errors and warnings, he’d eventually resorted to starting again from scratch.

He seems far from alone in his exasperation that such an apparently straightforward task should prove so difficult. Aaron Bertrand has described his frustrations in attempting to rid his machine of an expired evaluation copy of SQL Server 2008 R2 Enterprise, and install Developer edition. Others have experienced similar grief when innocently attempting to undo a botched install of SQL Server 2016 RC3, or simply remove SQL Server 2016 RC0 because the machine was needed for another purpose. Some resort to a brute force component-by-component uninstall, others reach to uninstaller tools such as IOBit for help.

It would seem that the only truly reliable way to remove completely all vestiges of SQL Server is a fresh install of the operating system if you’re working on bare metal, or else rebuilding the virtual machine from scratch. It is relatively straightforward to tear down and rebuild virtual machines, but it is still time-consuming unless you’ve scripted and automated the whole process, using tools such as Chef and Puppet. Alternatively, you can latch onto a SQL Server instance in a Windows Docker container and then dispose of it when you’re done. However, support for this only arrived with Windows Server 2016.

Redgate relies on “try it out and see” model for all of its tools and so both the install and uninstall processes need to be seamless. It’s not at all a straightforward task. However, with Microsoft intent on more frequent releases of SQL Server, and tools such as SSMS, and driving their development based on user feedback, it seems to me that they ought to make a concerted effort to improve their uninstallers. There really should be a big red ‘uninstall’ button that is guaranteed to remove all vestiges of SQL Server quickly and easily.