Unsupported but working versions of SQL Server on Windows Server 2019

Antique telephone callbox

One of my hobbies is trying to break technology so that you don’t have to. I don’t consider myself a professional or hobbyist hacker, though if the shoe fits…

Last year when Windows Server 2019 was released I wanted to see which versions of SQL Server I could run on it, testing more the unwritten backward compatibility promise Microsoft has maintained over the last 45 years, rather than what the documentation says.

Speaking of documentation, Glenn Berry has a nifty compatibility matrix to show what versions of SQL Server are supported on each version of Windows Server. For official purposes, this is the list you should refer to:

SQL Server Version Windows Server 2012 Windows Server 2016 Windows Server 2019
SQL Server 2019 No Yes Yes
SQL Server 2017 Yes Yes Yes
SQL Server 2016 Yes Yes Yes
SQL Server 2014 Yes Yes Yes
SQL Server 2012 Yes Yes No
SQL Server 2008 R2 Yes No No
SQL Server 2008 Yes No No
SQL Server 2005 No No No
SQL Server 2000 No No No
SQL Server 7.0 No No No
SQL Server 6.5 No No No

Supported versions of SQL Server and Windows Server, adapted from a matrix by Glenn Berry

But I know you’re not here for supported versions, because this post is about what Randolph managed to get running on Windows Server 2019, which as you know is a 64-bit operating system.

SQL Server 6.5 (32-bit)

Did it work? Yes.

Was it easy? No.

Comments: This was really tricky to get running, and it isn’t at all stable. Installation relied heavily on Windows compatibility mode, as well as renaming system files and the associated INI files that referred to those system files to avoid name collisions.

Summary: It works, but I don’t recommend it. The service is very fragile, and the process does not survive operating system restarts without some handholding. Obviously this is not for production use.

SQL Server 7.0 (32-bit)

Did it work? No.

Was it easy? No.

Comments: SQL Server 7.0 was Microsoft’s rewrite of the Sybase code base, where a significant number of changes were made to the SQL Server database engine. The installer is different to the 6.5 one (which reminded me of Windows 3.x days), and it just didn’t let me get far enough to manipulate the installer files appropriately.

Summary: It didn’t work. I gave up.

SQL Server 2000 (32-bit)

Did it work? Yes.

Was it easy? Relatively.

Comments: SQL Server 2000 needs to be installed using Windows compatibility mode (I used XP Service Pack 3). As I only tried installing the database engine and client tools, I did not bother with the things like replication and full text search.

Summary: It works. It survives an operating system restart. If you need to host a SQL Server 6.5 or 7.0 database, this is the way to do it, but I’d do it on Windows Server 2003 R2 instead. This is also not for production use.

SQL Server 2005 (64-bit)

Did it work? No.

Was it easy? Yes.

Comments: This one is sneaky because it lets you get very far in the process before failing. Provided you enable the .NET 3.5 feature in Windows Server, it gets all the way to the end before throwing an error about a corrupt registry key while trying to start the SQL Server service. I expect if I wanted desperately enough to get it to work, I could shim the registry key it’s failing on and get it working. Perhaps it just needs the sqlservr.exe to run in an earlier Windows compatibility level, but I didn’t try.

Summary: It didn’t work, but I didn’t bother digging too deep because databases in 2005 and higher compatibility level can be attached and restored on SQL Server 2016+, which makes it moot. Don’t use this for production.

SQL Server 2008 (64-bit)

Did it work? Yes.

Was it easy? Yes.

Comments: I only installed the database engine, and it worked fine. I was able to run SELECT @@VERSION; from sqlcmd and get a result. I could open SQL Server Configuration Manager, which meant I could control the service startup options, the network protocols, and trace flags.

Summary: It worked, but it is not officially supported by Microsoft. That said, SQL Server 2008 can host databases running in 80 and 90 compatibility level, so you can use SQL Server 2008 as an intermediary between SQL Server 2000 and SQL Server 2019. This is not supported for production.

SQL Server 2008 R2 (64-bit)

Did it work? Yes.

Was it easy? Yes.

Comments: This was exactly the same experience as SQL Server 2008.

Summary: If you don’t have the SQL Server 2008 installation media, but you have SQL Server 2008 R2, all the same things I wrote for SQL Server 2008 apply. Don’t do this for production.

SQL Server 2012 (64-bit)

Did it work? Yes.

Was it easy? Yes.

Comments: This was exactly the same experience as SQL Server 2008 and SQL Server 2008 R2.

Summary: Nothing much to report here. My rule of thumb is that if it is supported on Windows Server 2016, it will run on Windows Server 2019, but not as a production system.

SQL Server 2014 (64-bit) and higher

These are officially supported by Microsoft, so you should have smoother sailing.

Leave your thoughts in the comments below.

Photo by Steve Gale on Unsplash.

16 thoughts on “Unsupported but working versions of SQL Server on Windows Server 2019

    • That does explain why it worked without a hitch then! Thanks, I’ve updated the matrix and let Glenn know.

  • Hi,
    Thanks for the information.
    What exactly do you mean when you say for SQL Server 2012
    “My rule of thumb is that if it is supported on Windows Server 2016, it will run on Windows Server 2019, but not as a production system.”
    The last part I mean, ie, not as a production system?


    • I mean that — supported or not — software that installs and runs on Windows Server 2016 will most likely install and run on Windows Server 2019 as well.

  • Hi Randolph,
    Thanks for that.
    We are going to run SQL Server 2012 Instance on a 2019 box soon.
    We have had it working fine for quite a while on 2016, as well as a 2008 R2 on a Windows Server 2016 setup.
    Have not had any issues to date.
    They have SQL Server 2017 but I am unsure if our SQL Native Client 11 will work with that.
    I read somewhere it works and others say no. Also they mention MSOLEDB is the one to use now.


  • so is it possible to install/run SQL 2012 on windows server 2019 as non-production environment?

  • Hi Randolph,
    my understanding reading this post and comments was that it is theoretically possible, but no one tried it in real life (non-production). thanks for confirming!

  • hello, just tested, SQL Server 2005 (x64) – can be installed and it’s runnig on Windows Server 2016 x64 and Windows Server 2019 x64. If the install stops at starting services, yust replace sqlservr.exe and sqlos.dll at install dir with working ones from sp2, than click retry and the install goes succesfull. repeat sp2,sp3,… (tested wirh 120GB db dump file – succesfull restore and collation change).

    idea from Deb Anderson https://www.sqlservercentral.com/forums/topic/installing-the-sql-server-2005-enterprise:
    1. Uninstall everything related to SQL 2005
    2. If you have SQL 2005 SP2 installed on another computer go to that computer and copy sqlservr.exe and sqlos.dll from the installation folder (C:/Program Files/MS SQL Server/MSSQL.1/MSSQL/Binn).
    3. Try to install SQL 2005 again
    4. When you get the error prompt, without canceling it paste the files sqlservr.exe and slqos.dll to C:/Program Files/MS SQL Server/MSSQL.1/MSSQL/Binn
    5. Go back to the error prompt and press Retry

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: