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.

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

Leave a Reply

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

%d bloggers like this: