0

SQL Server Command Line Edition Upgrade with Windows Server Core

Where I work we have begun deploying Windows Server Core pretty religiously. It’s a great option if you want to minimize the number of patches your servers are receiving and the resources the OS consumes. Not having a GUI does create a little learning curve though.

We typically install SQL Server through Jess Pomfret’s (@jpomfret) DSC setup but today I had a bit of a problem… I deployed the wrong edition of SQL Server. I deployed Standard but needed Enterprise. Crap. With a GUI this would have been a pretty simple thing to fix but without one I found myself mashing keys for quite a while trying to figure out how to upgrade the SKU.

TL;DR

To do a command line edition upgrade of SQL Server (e.g. Standard to Enterprise), use the following command. This should work on Windows Server with a GUI (Desktop Experience) or Windows Server Core.

setup.exe /QS /ACTION=EditionUpgrade /INSTANCENAME=MSSQLSERVER /PID=XXXXX-XXXXX-XXXXX-XXXXX

Problem 1 – No Information

My first hurdle was a lack of information on how to actually do it. My Google searches for “sql server command line upgrade edition” only seemed to be bringing me back some old results for versions of SQL Server 2005. In SQL Server 2005 there was a /SKUUPGRADE argument that you could set to do an edition upgrade. It turns out that starting with SQL Server 2008 you need to use /ACTION=EditionUpgrade. Finding that information was a little difficult. Doing a setup.exe /? didn’t help me find what I was looking for – it only listed INSTALL, UNINSTALL, or UPGRADE as options for the /ACTION option. Searching for SKU on the Microsoft documentation page left me scratching my head too.

Problem 2 – No GUI

Once I found that /ACTION=EditionUpgrade needed to be used I started running into GUI issues. The option /Q or /QS needs to be used to run on Windows Server Core, which indicates a full quiet or quiet simple mode (no GUI). I later found out that /UIMODE=EnableUIOnServerCore would let the GUI work, again… not documented very well, but it was included in the errors if I would have read the whole thing.

Problem 3 – No Worky

After adding on /QS to my command I was then left scratching my head because nothing was actually being done. The command was completing without errors but my edition was left untouched. Apparently you need the INSTANCENAME parameter as well.

Conclusion

Windows Server Core is a great option to deploy but don’t discount the amount of time you may spend trying to do random things you would normally do through the GUI but can’t any longer. Some of the documentation for SQL Server also could be improved for edge cases like this.

Here’s the full command I ended up using to successfully upgrade the SQL Server edition on Windows Server Core. I did not need to include the /PID option since it was embedded in my VLC media but you may have to if it isn’t embedded in your DefaultSetup.ini file.

setup.exe /QS /ACTION=EditionUpgrade /INSTANCENAME=MSSQLSERVER /PID=XXXXX-XXXXX-XXXXX-XXXXX

Andrew Wickham

?‍?‍?‍? Dad ?‍? PowerSheller ? SQL Server DBA ?‍♂️ Marathoner ?‍♂️ Not Drew

Leave a Reply

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