Preparing for Windows Server 2016 End of Support — A Decision Table for Inventorying Business Apps and SQL Server and Choosing the Migration Order
· Go Komura · Windows Server, Windows Server 2016, SQL Server, End of Support, ESU, Migration, Business Applications, IT Asset Management
Revision history (first version, published Nov 1, 2026)
- First published
Cite this article(DOI: 10.5281/zenodo.23923007)
This article is archived on Zenodo. Below are both the DOI that always resolves to the latest version and the DOI pinned to the version you are reading.
Go Komura (2026). Preparing for Windows Server 2016 End of Support — A Decision Table for Inventorying Business Apps and SQL Server and Choosing the Migration Order. KomuraSoft LLC. https://doi.org/10.5281/zenodo.23923007 https://comcomponent.com/en/blog/windows-server-2016-end-of-support/
- DOI (latest version)
- 10.5281/zenodo.23923007
- DOI (this version)
- 10.5281/zenodo.23923008
Extended support for Windows Server 2016 ends on January 12, 2027. Counting from November 2026, when this article was written, a little over two months remain. This article is for companies that still have Windows Server 2016 on their in-house servers with business apps and SQL Server running on them, and it describes how to decide what to investigate, in what order, and how to migrate.
There are three key points. First, list the server’s roles, apps, services, scheduled tasks and SQL Server. Next, check the SQL Server version. SQL Server 2016 and 2017 are not supported on Windows Server 2025, so you cannot plan to upgrade only the OS. Then, for each role, choose among an in-place upgrade, migration to a new server and temporary extension with ESU.
The scope is Windows Server 2016 servers (physical or virtual) in the offices of small and medium-sized businesses. Cluster configurations are touched on only briefly. The dates and conditions are what was confirmed in Microsoft’s documentation on November 1, 2026. The commands in this article run only on Windows Server, and their output was checked in Windows PowerShell 5.1 (as administrator) on Windows Server 2022.
Preparing for the end of Windows 10 support is covered in “Practical Options After Windows 10 End of Support”. As on the client side, the server side starts with an inventory.
What Ends on January 12, 2027
Microsoft gives January 12, 2027 as the end date of extended support for Windows Server 20161. The table on the lifecycle page shows the end time as 6:59:59 AM US Pacific Time on January 13, 20272. In Japan Standard Time this is 11:59:59 PM on January 13, 2027.
After the end date, security updates, non-security updates, bug fixes and technical support are no longer provided1. Microsoft recommends Windows Server 2025 as the migration target1. The server does not stop. It keeps running, but newly found vulnerabilities are not fixed.
flowchart TB
accTitle: What happens after Windows Server 2016 extended support ends
accDescr: Shows that after extended support ends on January 12, 2027 the server keeps running but security updates and bug fixes no longer arrive, and you choose between migrating and extending temporarily with ESU.
EOS["January 12, 2027: extended support ends"] --> RUN["The server keeps running"]
EOS --> STOP["Security updates and fixes stop arriving"]
STOP --> MIG["Migrate to a new OS"]
STOP -.-> ESU["Extend temporarily with ESU"]
ESU -.-> MIG
Figure 1: After the end date the server still runs but receives no updates, so you choose between migrating and extending temporarily with ESU.
If SQL Server runs on the same server, check its deadline as well. For every product, the table on the lifecycle page shows the end time as 6:59:59 AM US Pacific Time on the following day. The dates in the table below are the day before that (the day Microsoft gives as the end date).
| Product | End of extended support | ESU |
|---|---|---|
| Windows Server 2016 | January 12, 2027 | Until 2030 (up to 3 years) |
| SQL Server 2014 | July 9, 2024 (ended) | Until July 12, 2027 |
| SQL Server 2016 | July 14, 2026 (ended) | Until July 2029 (up to 3 years) |
| SQL Server 2017 | October 12, 2027 | ― |
| SQL Server 2019 | January 8, 2030 | ― |
| SQL Server 2022 | January 11, 2033 | ― |
Sources for the table: each product’s lifecycle page3 and the documentation on ESU for Windows Server 20164.
Support for SQL Server 2016 ended before Windows Server 2016’s, and SQL Server 2017 also ends nine months after Windows Server 2016. If you think only about migrating the OS and leave SQL Server for later, you will soon need another migration.
In the diagram a solid line marks a relation that always holds and a dashed line marks a conditional one (the conditions are given per relation on the detail page). The full list of relations (10 in total, with evidence and certainty) and the definitions of the main concepts are collected on the knowledge map detail page (in Japanese). Data: JSON-LD / Turtle
ESU Is a Temporary Measure Until Migration Is Finished
For servers whose migration will not make the deadline, there are Extended Security Updates (ESU). ESU for Windows Server 2016 is enabled on servers connected to Azure Arc4. The conditions are as follows.
- Only Critical and Important security updates are provided; new features and non-security fixes are not included.
- The period is up to three years, until 2030.
- Setup in the Azure portal began on August 3, 2026, and billing starts on January 13, 2027.
- The covered editions are Standard and Datacenter.
- Buying it requires Software Assurance through volume licensing such as an Enterprise Agreement. Servers licensed through SPLA or a server subscription can buy it without Software Assurance.
- Install version 1.62 or later of the Azure Connected Machine agent on the server.
The technical support available under ESU is limited to activating ESU licenses, installing monthly updates and fixing problems caused by the updates1. It does not include investigating why an app stopped working, for example.
flowchart TB
accTitle: How to receive ESU for Windows Server 2016
accDescr: Shows that after meeting purchase conditions such as Software Assurance, you connect the server to Azure Arc, create an ESU license and assign it to the server, and then Critical and Important security updates arrive for up to three years.
SA["Software Assurance or equivalent"] --> ARC["Connect the server to Azure Arc"]
ARC --> LIC["Create and assign an ESU license"]
LIC --> UPD["Critical and Important security updates"]
UPD -.-> END["Up to 3 years, until 2030"]
Figure 2: ESU is assigned to servers connected to Azure Arc, and they receive security updates only.
If you move to an Azure virtual machine, the ESU FAQ explains that ESU is provided free of charge on Azure virtual machines5. However, for SQL Server 2016 it is stated explicitly that ESU does not become free even if you move to an Azure virtual machine6. When you consider moving to Azure to extend the server’s life, check the conditions for the OS and for SQL Server separately.
flowchart TB
accTitle: ESU conditions when moving to an Azure virtual machine
accDescr: Shows that when you move to an Azure virtual machine, the ESU FAQ says ESU is provided free on virtual machines while it is stated explicitly that SQL Server 2016 ESU does not become free even on a virtual machine, so you check the conditions for the OS and SQL Server separately.
VM["Move to an Azure virtual machine"] --> OS["ESU FAQ: free on virtual machines"]
VM --> SQL["SQL Server 2016: not free"]
OS --> CHK["Check the OS and SQL Server conditions separately"]
SQL --> CHK
Figure 3: When moving to Azure, check the ESU conditions for the OS and for SQL Server separately.
ESU is for securing time to do the migration work. Installing ESU does not reduce the migration work itself. If you keep using ESU without deciding when to stop, billing continues the whole time, and when ESU ends in 2030 you face the same decision again.
Start the Inventory with the Roles
Before deciding how to migrate, write down what runs on the server. The order is as follows.
- The server’s roles and features (file server, domain controller, IIS and so on)
- Installed apps, services and scheduled tasks
- What the apps depend on (.NET Framework, drivers, 32-bit components, licenses)
- SQL Server version, edition and database compatibility level
- How backups are taken, and whether you can restore them
flowchart TB
accTitle: The order of the Windows Server 2016 inventory
accDescr: Shows inventorying in the order of roles and features, apps, services and tasks, app dependencies, SQL Server version and compatibility level, and backup and restore checks, then choosing the migration method from the results.
R["Roles and features"] --> A["Apps, services and tasks"]
A --> D["App dependencies"]
D --> S["SQL Server version and compatibility level"]
S --> B["Check backup and restore"]
B --> C["Choose the migration method"]
Figure 4: Start with the roles, look into SQL Server and backups, and then choose the migration method.
The roles come first because the role determines the migration method. For example, for domain controllers Microsoft recommends promoting a new server and demoting the old one instead of using an in-place upgrade7.
Run the following commands in PowerShell opened as administrator. All of them follow the syntax in Microsoft’s documentation.
# 1. Installed roles and features
Get-WindowsFeature | Where-Object Installed |
Select-Object Name, DisplayName |
Export-Csv -Path .\roles-features.csv -NoTypeInformation -Encoding UTF8
# 2. Installed apps (both 64-bit and 32-bit)
$paths = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
Get-ItemProperty -Path $paths -ErrorAction SilentlyContinue |
Where-Object DisplayName |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, PSPath |
Sort-Object DisplayName |
Export-Csv -Path .\installed-apps.csv -NoTypeInformation -Encoding UTF8
# 3. Services (executable path and run-as account)
Get-CimInstance -ClassName Win32_Service |
Select-Object Name, DisplayName, StartMode, State, StartName, PathName |
Export-Csv -Path .\services.csv -NoTypeInformation -Encoding UTF8
# 4. Scheduled tasks in folders other than Microsoft's
Get-ScheduledTask |
Where-Object TaskPath -notlike '\Microsoft\*' |
Select-Object TaskPath, TaskName, State |
Export-Csv -Path .\scheduled-tasks.csv -NoTypeInformation -Encoding UTF8
# 5. Release value of .NET Framework 4.x
Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release
Get-WindowsFeature returns the features available on the server and the features installed8, so Where-Object Installed narrows the result to the installed ones.
The list of apps is read from the uninstall registry key9. On 64-bit Windows, information about 32-bit apps is placed under WOW6432Node10, so read both. The PSPath column shows which location each row came from. For 32-bit apps, check whether the 32-bit components they need (COM, ODBC drivers and so on) will also be available on the new server.
Do not use the Win32_Product class to get the list of apps. Microsoft explains that querying this class records an event (ID 1035) saying Windows Installer reconfigured the product, and can slow down startup and logon11.
A service’s PathName and StartName tell you the location of its executable and its run-as account12. If a business app’s service runs under a dedicated account, prepare the same permissions on the migration target. For scheduled tasks, list the custom ones that are not under \Microsoft\13. If nightly batches or integration jobs with other systems are registered, the migration target needs the same tasks.
The .NET Framework 4.x version is indicated by the Release value; for example, 528040 or higher means .NET Framework 4.8 or later14.
For each app, check the following four dependencies.
flowchart TB
accTitle: Dependencies to check for each business app
accDescr: Shows checking four things for each business app, the .NET Framework version, device and report drivers, components such as 32-bit COM and ODBC drivers, and licenses for the app and the new OS, with anything that cannot be provided becoming a condition for migration.
APP["Business app"] --> N[".NET Framework version"]
APP --> DRV["Device and report drivers"]
APP --> COM["32-bit COM and ODBC"]
APP --> LIC["App and OS licenses"]
N --> GAP["What cannot be provided becomes a migration condition"]
DRV --> GAP
COM --> GAP
LIC --> GAP
Figure 5: Check four dependencies for each app and identify what will not be available on the new server.
Licenses are easy to overlook. Windows Server requires a license for the new version with each upgrade15. Also confirm with the seller or the app vendor whether Client Access Licenses (CALs) and the business app’s own licenses can be moved to the new server. If the app vendor’s support has ended, the decision table in “What to Do with a Business App Whose Maintenance Contract Has Ended” can also help.
Check the SQL Server Version First
If SQL Server is installed on the server, check its version before deciding how to migrate. The SQL Server version limits which Windows Server versions you can migrate to.
In Microsoft’s compatibility table for SQL Server and Windows, the versions supported on Windows Server 2025 are SQL Server 2019, 2022 and 2025. SQL Server 2016 and 2017 are not supported. On Windows Server 2022, SQL Server 2017 through 2025 are supported, and SQL Server 2016 is not16.
flowchart TB
accTitle: SQL Server versions and the target Windows Server
accDescr: Shows that SQL Server 2016 is not supported on Windows Server 2022 or 2025 and SQL Server 2017 is not supported on Windows Server 2025, so the SQL Server version has to be decided before upgrading only the OS, and that SQL Server 2019 and later are supported on Windows Server 2025.
S16["SQL Server 2016"] -.->|"Not supported"| W22["Windows Server 2022"]
S16 -.->|"Not supported"| W25["Windows Server 2025"]
S17["SQL Server 2017"] -.->|"Not supported"| W25
S19["SQL Server 2019 or later"] -->|"Supported"| W25
Figure 6: With SQL Server 2016 or 2017 left as is, you cannot upgrade only the OS to Windows Server 2025.
Check the current version and edition with the following query from SQL Server Management Studio or a similar tool. This query was run and checked on SQL Server 2016 SP3 Express LocalDB.
SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('Edition') AS Edition;
SELECT name, compatibility_level, recovery_model_desc
FROM sys.databases;
ProductVersion returns the version number, ProductLevel the RTM or service pack level, and Edition the edition17. The compatibility_level in sys.databases is each database’s compatibility level18. Compatibility level 130 is the default for SQL Server 2016, 140 for 2017, 150 for 2019 and 160 for 202219.
You can upgrade from SQL Server 2016 to SQL Server 2022 if you are on SQL Server 2016 SP3 or later20. When you restore a database to SQL Server 2022 on a new server, its compatibility level stays at the original value19. Query execution plans change when you raise the compatibility level.
As the procedure for raising the compatibility level, Microsoft recommends using Query Store21.
- Move SQL Server to the new version without changing the compatibility level.
- Enable Query Store.
- Over one full business cycle, record queries and execution plans at the original compatibility level as a baseline.
- Raise the compatibility level to the new version’s level.
- Find queries that got slower in Query Store and force their previous execution plans. If that does not fix them, set the compatibility level back.
flowchart TB
accTitle: Raising the compatibility level after moving SQL Server to a new version
accDescr: Shows moving SQL Server to a new version without changing the compatibility level, recording a baseline with Query Store, then raising the compatibility level, forcing the previous execution plan for queries that got slower, and setting the compatibility level back if that does not fix them.
UP["Upgrade the version, keep the compatibility level"] --> QS["Enable Query Store"]
QS --> BASE["Record a baseline over a business cycle"]
BASE --> CL["Raise the compatibility level"]
CL --> CHK["Find queries that got slower"]
CHK --> FORCE["Force the previous execution plan"]
FORCE -.-> BACK["If not fixed, set the level back"]
Figure 7: Separate the version upgrade from the compatibility level change, and take a baseline with Query Store in between.
Even if you migrate the OS and upgrade SQL Server on the same day, you can postpone changing the compatibility level. Fewer things change on migration day, which makes it easier to narrow down the cause when a problem appears.
Choose a Migration Method for Each Role
From the inventory results, choose a migration method for each server and each role. There are four options: an in-place upgrade that upgrades the OS on the same server, migration to a newly prepared server, migration to an Azure virtual machine, and temporary extension with ESU.
| Server situation | Candidate migration method | Reason |
|---|---|---|
| Domain controller | Promote a new server and demote the old one | Microsoft recommends not using an in-place upgrade7 |
| SQL Server 2016 / 2017 runs on the same server | Install SQL Server 2022 or similar on a new server and move | SQL Server 2016 / 2017 are not supported on Windows Server 202516 |
| Support for the business app on the new OS cannot be confirmed | Check the behavior on a test copy before deciding. If time runs out, extend the deadline with ESU | Upgrading the production OS without confirmed support is hard to roll back |
| The role is simple, such as a file server, and app support has been confirmed | An in-place upgrade is also a candidate | You can upgrade the version while keeping settings and data15 |
| The server hardware is also old and should be replaced | Move to a new server or an Azure virtual machine | The hardware may not meet the new OS’s hardware requirements22 |
flowchart TB
accTitle: How to choose the migration method
accDescr: Shows that for a domain controller you promote a new server, if SQL Server 2016 or 2017 runs on the same server you move to a new server together with SQL Server, if app support cannot be confirmed you test before deciding, and otherwise, if the role is simple, an in-place upgrade is also a candidate.
Q1{"Domain controller?"} -->|"Yes"| NEWDC["Promote a new server"]
Q1 -->|"No"| Q2{"SQL Server 2016/2017?"}
Q2 -->|"Yes"| NEWSQL["Move to a new server"]
Q2 -->|"No"| Q3{"App support confirmed?"}
Q3 -->|"No"| TEST["Test on a copy before deciding"]
Q3 -->|"Yes"| IPU["An in-place upgrade is also a candidate"]
Figure 8: Check the role, SQL Server and app support in that order to narrow down the migration method.
If you choose an in-place upgrade, check which versions you can upgrade to. With installation media, Windows Server 2016 can be upgraded to 2019, 2022 or 2025. Upgrading to 2025 through a feature update in Windows Update applies only to Windows Server 2019 and 2022 and cannot be used from 201615. An in-place upgrade cannot be used on servers in a cluster; use a cluster rolling upgrade to upgrade them one at a time715.
flowchart TB
accTitle: In-place upgrade paths from Windows Server 2016
accDescr: Shows that Windows Server 2016 can be upgraded to 2019, 2022 and 2025 with installation media, and that upgrading to 2025 through a Windows Update feature update applies only to 2019 and 2022.
W16["Windows Server 2016"] -->|"Installation media"| W19["Windows Server 2019"]
W16 -->|"Installation media"| W22["Windows Server 2022"]
W16 -->|"Installation media"| W25["Windows Server 2025"]
W19 -.->|"Windows Update"| W25
W22 -.->|"Windows Update"| W25
Figure 9: From 2016, upgrade with installation media. Upgrading through Windows Update applies to 2019 and 2022.
If you upgrade to Windows Server 2025 on the same hardware, also check whether the CPU meets the requirements. Windows Server 2025 requires a 64-bit CPU that supports SSE4.2 and the POPCNT instruction, second-level address translation (EPT or NPT) and more. You can check CPU support with Sysinternals Coreinfo22.
Test on a Copy Before Production
Whichever method you choose, avoid trying it for the first time on the production server. As a prerequisite for an in-place upgrade, Microsoft asks you to take a full backup including the OS, apps and data, and to test that you can restore it7.
flowchart TB
accTitle: The pre-migration test flow
accDescr: Shows taking a full backup, restoring it to a test virtual machine to confirm it can be restored, performing the migration or upgrade on that copy, running through a business cycle to check, and then setting the production cutover date.
BK["Full backup"] --> RS["Restore to a test virtual machine"]
RS --> MV["Migrate or upgrade the copy"]
MV --> RUN["Run through a business cycle to check"]
RUN --> GO["Set the production cutover date"]
RUN -.->|"Problems found"| FIX["Fix the cause and test again"]
FIX -.-> MV
Figure 10: Try the migration on a copy made from a backup, run through a business cycle, and then move to production.
On the copy, check the following.
- Whether the business app starts and the usual operations can all be performed
- Whether report printing, communication with devices and integration with other systems work
- Whether scheduled tasks and services run with the same accounts and permissions as before the migration
- For apps that use SQL Server, whether the time taken by heavy processing such as month-end jobs stays the same
The in-place upgrade procedure recommends saving diagnostic information before the upgrade7. This is so that you can investigate the original state if the upgrade fails.
Get-ComputerInfo -Property WindowsBuildLabEx,WindowsEditionID | Out-File -FilePath .\computerinfo.txt
systeminfo.exe | Out-File -FilePath systeminfo.txt
ipconfig /all | Out-File -FilePath ipconfig.txt
Keep the saved files outside the server being upgraded (on a network location or a USB drive). For backup design, also see “Ransomware-Resilient Backups”, which was written in parallel with this article.
The Order to Decide in, Working Back from the Deadline
As of November 2026, the time left until January 12, 2027 is limited. If you cannot move every server by the deadline, decide the order of migration and use ESU for the servers that remain.
flowchart TB
accTitle: The order to decide in before the deadline
accDescr: Shows finishing the inventory, deciding the migration method for each server, testing and migrating starting with the servers that can be moved by the deadline, and for servers that will not make it, preparing ESU and setting a completion date for the migration.
INV["Finish the inventory"] --> PLAN["Decide the method for each server"]
PLAN --> FIT{"Can it be moved by January 12?"}
FIT -->|"Yes"| DO["Test and migrate"]
FIT -->|"No"| ESU["Prepare ESU"]
ESU --> DUE["Set the migration completion date"]
DUE --> DO
Figure 11: Move the servers that can make the deadline first, and pair ESU with a completion date for those that cannot.
Also set a migration completion date for the servers that use ESU. Billing for Azure Arc ESU continues while you use it4, and the period lasts at most until 2030. ESU setup began in August 2026, so check early whether you meet the purchase conditions (Software Assurance and so on).
Sometimes the business apps running on the server are old and need modification to run on the target OS. Whether to move .NET Framework apps to modern .NET is covered in “Pre-Migration Checklist for Moving from .NET Framework to .NET”, and decision material for VB6 and Access apps is in “Extending the Life of and Migrating VB6 / Access Business Apps”.
Related Articles
- Practical Options After Windows 10 End of Support — A Decision Table for ESU, LTSC, and Replacement
- What to Do with a Business App Whose Maintenance Contract Has Ended — A Decision Table for Keeping It Running, Modifying It or Rebuilding It
- Pre-Migration Checklist for Moving from .NET Framework to .NET
- Extending the Life of and Migrating VB6 / Access Business Apps
- Volume Shadow Copy (VSS): The Mechanism and the Practice
- Ransomware-Resilient Backups
References
-
Microsoft Tech Community, Plan for Windows Server 2016 and Windows 10 2016 LTSB end of support. The end-of-support date for Windows Server 2016, what is no longer provided afterwards, and what ESU does and does not include. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Windows Server 2016 - Microsoft Lifecycle. The Fixed Lifecycle Policy and the end time of extended support shown in US Pacific Time. ↩
-
Microsoft Learn, the lifecycle pages for SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019 and SQL Server 2022. The end times of extended support and the ESU periods. ↩
-
Microsoft Learn, Prepare to deliver Extended Security Updates for Windows Server through Azure Arc. The period of ESU for Windows Server 2016, the types of updates, the start dates for setup and billing, covered editions, purchase conditions and agent version. ↩ ↩2 ↩3
-
Microsoft Learn, Product Lifecycle FAQ - Extended Security Updates. That ESU is provided free of charge on virtual machines in Azure. ↩
-
Microsoft Learn, What are Extended Security Updates for SQL Server?. That for SQL Server 2016, ESU does not become free even if you move to an Azure virtual machine. ↩
-
Microsoft Learn, Upgrade Windows Server in Place. Taking a full backup and testing restore, that it cannot be used on clusters, that it should not be used on domain controllers, and the diagnostic information to save before upgrading. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Get-WindowsFeature. ↩
-
Microsoft Learn, Windows Installer Properties for the Uninstall Registry Key. ↩
-
Microsoft Learn, Registry Redirector. That keys for 32-bit apps are placed under
Wow6432Node. ↩ -
Microsoft Learn, Windows Installer reconfigured all applications. That apps and WMI filters that query
Win32_Productcause slow startup and logon and event ID 1035. ↩ -
Microsoft Learn, Win32_Service class. ↩
-
Microsoft Learn, Get-ScheduledTask. ↩
-
Microsoft Learn, Determine which .NET Framework versions are installed. The mapping between
Releasevalues and .NET Framework versions. ↩ -
Microsoft Learn, Plan Your Windows Server Upgrade Path. What an in-place upgrade keeps, the paths for each version, the versions that can be upgraded through Windows Update, and that each upgrade requires a new license. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Version Requirements for SQL Server in Windows Operating System. The compatibility table between SQL Server versions and Windows versions. ↩ ↩2
-
Microsoft Learn, SERVERPROPERTY (Transact-SQL). ↩
-
Microsoft Learn, sys.databases (Transact-SQL). ↩
-
Microsoft Learn, ALTER DATABASE Compatibility Level (Transact-SQL). The default compatibility level for each version, and that a restored database keeps its original compatibility level. ↩ ↩2
-
Microsoft Learn, Supported Version and Edition Upgrades (SQL Server 2022). The versions that can be upgraded to SQL Server 2022. ↩
-
Microsoft Learn, Query Store Usage Scenarios. The procedure for keeping performance stable when upgrading to a new version. ↩
-
Microsoft Learn, Hardware requirements for Windows Server. The instructions required of the CPU, and checking with Coreinfo. ↩ ↩2
Related Articles
Recent articles sharing the same tags. Deepen your understanding with closely related topics.
Practical Options After Windows 10 End of Support — A Decision Table for ESU, LTSC, and Replacement
Nine months on from the Windows 10 end of support in October 2025. This article organises what to do with the Windows 10 PCs still sittin...
What to Do with a Business App Whose Maintenance Contract Has Ended — A Decision Table for Keeping It Running, Modifying It or Rebuilding It
When a business app's maintenance contract ends: what to get from the vendor, how to check OS and runtime support, and a table for keepin...
Versioning Your Business App's Database Schema — Migration Practices to Prevent 'Every Customer Has a Different DB'
A practical guide to versioning the database schema of a business app whose databases are scattered across customer sites. Covers PRAGMA ...
What Goes Wrong When You Move a File Server to SharePoint and OneDrive ── Path Length, Blocked Names, Excel Links, Macros and Access
Problems that come up when moving a file server to SharePoint or OneDrive: path length, blocked names, Excel links, macro paths, Access, ...
How a Company Without In-House Developers Should Choose a Software Vendor — What to Check Before Estimates and Contracts
What a company without developers should check when choosing a vendor: requirements, deliverables and copyright, acceptance, subcontracti...
Related Topics
These are topic pages close to this theme. Starting from the article, you can go on to related services and other articles.
Windows Technical Topics
Entry point collecting technical topics on Windows development, bug investigation, and use of existing assets.
Services Connected to This Topic
This article leads to the following service pages. Start from the entry point closest to your situation.
Modification & Maintenance of Existing Windows Software
We can inventory the business apps and SQL Server running on Windows Server 2016 with you, and work out the order of moving them to new servers and how to test, based on your actual configuration.
Technical Consulting & Design Review
Whether to choose an in-place upgrade, migration to a new server or temporary extension with ESU depends on the combination of roles, apps and SQL Server, which makes it a good fit for technical consulting and design review.
Frequently Asked Questions
Questions commonly asked at the time of consultation about the topic of this article.
- When does support for Windows Server 2016 end?
- Extended support ends on January 12, 2027. Microsoft's lifecycle page shows the end time as 6:59:59 AM US Pacific Time on January 13, 2027. After that, security updates, non-security updates, bug fixes and technical support are no longer provided.
- Is ESU available for Windows Server 2016 too?
- Yes. Servers connected to Azure Arc can receive Critical and Important security updates for up to three years (until 2030). Buying it requires Software Assurance under volume licensing or an equivalent, and billing starts on January 13, 2027. It does not include new features or non-security fixes, and it is a temporary measure until you migrate.
- Can I do an in-place upgrade to Windows Server 2025 on a server that runs SQL Server 2016?
- We do not recommend it. In Microsoft's compatibility table for SQL Server and Windows, SQL Server 2016 and SQL Server 2017 are not supported on Windows Server 2025. Extended support for SQL Server 2016 already ended in July 2026. Consider moving to a new server together with a plan to upgrade to SQL Server 2022 or a similar version.
- Which is better, an in-place upgrade or migrating to a new server?
- Decide by role and app. For domain controllers, Microsoft recommends promoting a new server instead of using an in-place upgrade. Servers that also host SQL Server 2016 or apps whose support has ended give you more freedom of combination when you move to a new server. For a simple file server or similar, if you can confirm that the apps you use are supported on the new OS, an in-place upgrade is also a candidate, after you take a backup and confirm that you can restore it.
Author Profile
Profile page for the article author.
Go Komura
Representative of KomuraSoft LLC
Focused on Windows software development, technical consulting, and bug investigation, with particular strength in projects where existing assets remain and in investigating failures whose cause is hard to see.