delivered for clients · names withheldupgrade Cloud and infrastructure

Windows Server 2016 and SQL Server 2016 end of support

We upgrade or migrate Windows Server 2016 and SQL Server 2016 estates, before and after end of support. We inventory every instance, check what applications and vendors support on newer versions, and choose per server: in-place upgrade, rebuild, a move to Azure SQL or Azure VMs, or Extended Security Updates as a short bridge. Databases get upgraded with tested compatibility levels and a rollback point.

  1. 01Instance and licence inventory
  2. 02Path per server
  3. 03Database compatibility testing
  4. 04Application and vendor sign-off
  5. 05Cut-over and ESU clean-up
case-study / windows-sql-server-end-of-support delivered
beforeWindows Server 2016 and SQL Server 2016 afterSupported Windows and SQL Server, on-prem or Azure
01 · APPLICATIONS 02 · HOSTING 03 · DATA SERVICES 04 · MANAGEMENT Vendor application: signed off on the new version Vendor application signed off on the newversion Line-of-business apps: tested logins and jobs Line-of-businessapps tested logins and jobs Windows Server 2025: in-place from 2016 Windows Server 2025 in-place from 2016 Azure VMs: Azure Hybrid Benefit Azure VMs Azure Hybrid Benefit Remaining 2016 servers: ESU with an exit date Remaining 2016servers ESU with an exit date Current SQL Server: tested compatibility level Current SQL Server tested compatibilitylevel Azure SQL Managed Instance: no patching to run Azure SQL ManagedInstance no patching to run Azure Arc: inventory · ESU billing Azure Arc inventory · ESUbilling
case file

The story

Told without the client's name or anything that could identify them.

what happened

A distributor's infrastructure team found SQL Server 2016 instances flagged as unsupported by vulnerability scans after extended support ended on 14 July 2026, with Windows Server 2016 due to follow on 12 January 2027. A vendor application was certified only on 2016, and nobody could say which instances ran Standard or Enterprise or which cores had Software Assurance. We connected servers to Azure Arc to build the instance and licence inventory, then chose a path for each server: in-place upgrade, rebuild, Azure SQL Managed Instance, retire, or ESU as a dated bridge. Production backups were restored onto the target SQL Server versions and run at the old compatibility level, with Query Store watching for regressions, before the level was raised. Each cut-over had a rollback point, and ESU subscriptions were cancelled as servers left 2016.

why it was urgent

SQL Server 2016 extended support ended on 14 July 2026. Windows Server 2016 follows on 12 January 2027. The catch is the ESU price. With SQL Server 2014, ESUs on Azure VMs were free. SQL Server 2016 ESUs aren't, and they're billed through Azure Arc or the SQL IaaS Agent extension.

problem statement
  • openVulnerability scans already flag SQL Server 2016 instances as unsupported.
  • recurringA vendor certifies its application on Windows Server 2016 and nothing newer, and it hasn't answered your emails.
  • blockedNobody's sure which SQL Server instances are on Standard and which on Enterprise, or which cores have Software Assurance.
  • openThose servers run .NET Framework 4.6.2 apps too, and 4.6.2 support ends the same day as Windows Server 2016.
architecture

The estate, before and after

before
before

Before: applications on Windows Server and SQL Server 2016

Line-of-business and vendor applications ran on Windows Server 2016 hosts with SQL Server 2016 underneath, plus SSIS packages, Agent jobs and linked servers. Scans flagged the instances, and nobody could say which edition or licence coverage each one had.

Before: applications on Windows Server and SQL Server 2016 Line-of-business and vendor applications ran on Windows Server 2016 hosts with SQL Server 2016 underneath, plus SSIS packages, Agent jobs and linked servers. Scans flagged the instances, and nobody could say which edition or licence coverage each one had. 01 · APPLICATIONS 02 · SERVERS 03 · DATA SERVICES 04 · OVERSIGHT runs on runs on hosts packages · jobs linked queries unsupported finding coverage unknown Vendor application certified only on 2016 .NET Framework 4.6.2apps IIS on the same servers Windows Server 2016 support ends 12 Jan 2027 SQL Server 2016 support ended 14 Jul 2026 SSIS and SQL Agent jobs credentials · file shares Linked servers cross-instance queries Vulnerability scans flag unsupported versions Licence records edition and SA unknown
Read the diagram as text
  1. Vendor application → Windows Server 2016: runs on
  2. .NET Framework 4.6.2 apps → Windows Server 2016: runs on
  3. Windows Server 2016 → SQL Server 2016: hosts
  4. SQL Server 2016 → SSIS and SQL Agent jobs: packages · jobs
  5. SQL Server 2016 → Linked servers: linked queries
  6. Vulnerability scans → SQL Server 2016: unsupported finding
  7. Licence records → SQL Server 2016: coverage unknown
after
after

After: supported Windows and SQL Server, tracked in Azure Arc

We moved the servers to Windows Server 2025, on-premises or on Azure VMs, and the databases to a current SQL Server release or Azure SQL Managed Instance. Azure Arc holds the inventory, and the few servers on ESUs each have an exit date.

After: supported Windows and SQL Server, tracked in Azure Arc We moved the servers to Windows Server 2025, on-premises or on Azure VMs, and the databases to a current SQL Server release or Azure SQL Managed Instance. Azure Arc holds the inventory, and the few servers on ESUs each have an exit date. 01 · APPLICATIONS 02 · HOSTING 03 · DATA SERVICES 04 · MANAGEMENT runs on runs on hosts hosts connects to inventory paid ESU SQL inventory Vendor application signed off on the newversion Line-of-business apps tested logins and jobs Windows Server 2025 in-place from 2016 Azure VMs Azure Hybrid Benefit Remaining 2016 servers ESU with an exit date Current SQL Server tested compatibility level Azure SQL ManagedInstance no patching to run Azure Arc inventory · ESU billing
Read the diagram as text
  1. Vendor application → Windows Server 2025: runs on
  2. Line-of-business apps → Azure VMs: runs on
  3. Windows Server 2025 → Current SQL Server: hosts
  4. Azure VMs → Current SQL Server: hosts
  5. Line-of-business apps → Azure SQL Managed Instance: connects to
  6. Azure Arc → Windows Server 2025: inventory
  7. Azure Arc → Remaining 2016 servers: paid ESU
  8. Azure Arc → Current SQL Server: SQL inventory
results

What the client got

What changed for the client once the work was done. Described, not scored: we don't publish client figures.

  1. result 01

    Every server has a decided path and an owner

    We marked each Windows Server and SQL Server instance for in-place upgrade, side-by-side rebuild, Azure SQL Managed Instance or an Azure VM, retirement, or a dated ESU bridge.

  2. result 02

    The licence position is known per instance

    Every instance is in the inventory with edition, version, CU level, cores, Software Assurance status and owning application. Most of that came from Azure Arc.

  3. result 03

    Compatibility levels were raised only after testing

    We ran every workload on the new SQL Server at the old compatibility level to start with, and Query Store recorded plan regressions before each level went up.

  4. result 04

    Vendors and app owners signed off in writing

    For each application we tested logins, linked servers, SSIS packages, SQL Agent jobs and service accounts, and recorded who signed off against the vendor's support matrix.

  5. result 05

    ESUs are a bridge with an exit date

    Servers on ESUs have exit dates, and once one leaves the old version its subscription is cancelled. You stop paying for it that day.

what can go wrong

Risks we plan for

  1. ESUs used as a plan instead of a bridge

    ESUs cover critical security fixes only, for three years at most. Buy them without an end date and teams tend to keep renewing until the last year.

  2. Query plan regressions

    A newer cardinality estimator can slow a few critical queries. Testing at the old compatibility level and Query Store hints keep this contained.

  3. SSIS, SSRS and linked servers

    They get forgotten more than anything else in the estate and take longest to move. Packages that hold credentials or point at file shares are the worst.

  4. Clustered and Always On instances

    Failover clusters can't take the simple in-place path. They need a rolling or side-by-side plan, with listener and DNS changes worked out in advance.

ai in this move

Where AI helps, and where it needs guardrails

For .NET modernization, Microsoft points people to the GitHub Copilot modernization agent. Azure Arc already collects SQL inventory, and an assistant can summarize it. We have AI draft the per-server plan and the SQL compatibility notes, then test every change ourselves. Put an MCP server with read-only access over the Arc data and anyone can ask which servers are still on 2016.

forward deployed engineers →
you keep

What you're left with

We write these for your setup, and they're working documents. Your team should be able to keep things running from them long after we've gone.

  • inventory01

    Windows Server and SQL Server inventory with licence position

    yours to keep
  • document02

    Upgrade, migrate, retire or ESU decision per server

    yours to keep
  • tests03

    Compatibility test results with plan regressions and fixes

    yours to keep
  • runbook04

    Cut-over runbooks with rollback points

    yours to keep
  • code05

    ESU subscription list with an exit date for each server

    yours to keep
talent and delivery · supported windows and sql server, on-prem or azure

Certified engineers, wherever you need them.

Some clients want a project team, some want a couple of engineers on theirs. Either works. Onsite, nearshore or offshore, with handovers across time zones that keep things moving.

Onsite

Engineers at your sites in the US

Nearshore

Overlapping hours with US teams

Offshore

Overnight progress on your backlog

All time zones

Coverage handed over across time zones

24-hour coverage · US Central time
OnsiteUS business hours
Nearshoreoverlapping US hours
Offshoreovernight progress
Combinedhandover, not hand-off
01Should we buy Extended Security Updates?

Buy them for the servers that genuinely can't move in time, and put an exit date on each one. They're billed through Azure Arc or Azure VMs, and there's a pay-as-you-go option without Software Assurance. You get critical fixes, and no support for the old version.

02Is moving to Azure cheaper than upgrading on-premises?

Sometimes. Azure Hybrid Benefit lets you reuse Windows Server and SQL Server licences, and Azure SQL Managed Instance removes patching. It depends on how many cores you run, your Software Assurance coverage and whether the hardware is due for refresh anyway. We price both.

03Can we upgrade straight from SQL Server 2016 to the newest version?

Usually yes, by restore or detach and attach onto a new instance, which also gives a clean rollback. We test the workload at the old compatibility level before raising it.

04Do you handle the application side too?

Yes. When an upgrade pulls in .NET Framework, IIS or SSIS changes, which it often does, our application engineers handle them.

sources 6 sources linked last checked 2026-10-20 content fingerprint ea1438c6
  1. 01Microsoft Lifecycle: SQL Server 2016learn.microsoft.com ↗
  2. 02Microsoft Lifecycle: Windows Server 2016learn.microsoft.com ↗
  3. 03Microsoft Learn: What are Extended Security Updates for SQL Server?learn.microsoft.com ↗
  4. 04Microsoft Learn: Extended Security Updates for Windows Server (in-place upgrade paths)learn.microsoft.com ↗
  5. 05Microsoft Lifecycle: .NET Frameworklearn.microsoft.com ↗
  6. 06Microsoft Learn: .NET Upgrade Assistant deprecationlearn.microsoft.com ↗
Reviewed by the Cohash team Product names are trademarks of their owners. how we handle facts and data →
next step

Planning this move?

A 30-minute working session with a senior engineer. No slides.

useful to bring
  • The platform and the version you're on
  • Where you need to get to, and by when
  • What's custom: rules, plugins, integrations
  • Any audit finding or deadline driving it