JusDB
Free DB Audit
Database Engineering

SQL Server 2016 Is Out of Support: Upgrade Path to 2022 or 2025

SQL Server 2016 lost support on 14 July 2026. Weigh ESUs, pick SQL Server 2022 or 2025, check the upgrade path, and run a side-by-side cutover with a safe compatibility level plan.

JusDB Team
Published November 2, 2026
19 min read

SQL Server 2016 left extended support on 14 July 2026. The instance still starts, runs queries, and takes backups, but Microsoft no longer ships security fixes for it unless you pay for Extended Security Updates (ESUs), and you cannot open a support case for it. On Amazon RDS, 2016 instances are being scheduled for an automatic major version upgrade. Most teams now face three questions: buy ESUs or move, move to SQL Server 2022 or SQL Server 2025, and upgrade in place or build a new server beside the old one. This guide answers each with the vendor documentation, the T-SQL to check your own estate, and a log shipping runbook for a short cutover.

TL;DR
  • Extended support for SQL Server 2016 ended on 14 July 2026. ESUs cover Enterprise and Standard editions with critical security fixes only, until 17 July 2029, through Azure Arc or an Azure VM.
  • Both SQL Server 2022 and SQL Server 2025 accept a direct upgrade from SQL Server 2016 SP3. SQL Server 2022 needs Windows Server 2016 or later, and SQL Server 2025 needs Windows Server 2019 or later.
  • Data Migration Assistant was retired on 16 July 2025. Use the migration component in SQL Server Management Studio (SSMS) 21 or later for the upgrade assessment.
  • Upgrade the engine first and keep each database at compatibility level 130. Capture a Query Store baseline, then raise the level and fix regressions with plan forcing.
  • A side-by-side move with log shipping keeps the outage to the tail-log restore and the repoint. You can roll back only until the applications write to the new server.

Scope and review date: November 2026. This post covers SQL Server 2016 SP3 on Windows (Standard and Enterprise editions) moving to SQL Server 2022 or SQL Server 2025, with short notes on Azure SQL Managed Instance and Amazon RDS for SQL Server. Dates, versions, and commands were checked against Microsoft and AWS documentation on 9 November 2026. They were not run in a lab, so rehearse every step on a copy of production first.


What ended on 14 July 2026, and what still works?

The Microsoft Lifecycle page for SQL Server 2016 lists the extended end date as 15 July 2026 at 06:59 Pacific time, which is the end of 14 July. Mainstream support had already ended in July 2021, and Service Pack 3 is the last service pack. The ESU FAQ states the end-of-support date as 14 July 2026.

Nothing in the engine stops working; the fixes stop. Without ESUs, Microsoft provides no patches or security updates and accepts no support tickets for SQL Server 2016, even under a support plan.

sql
SELECT SERVERPROPERTY('ProductVersion') AS product_version,
       SERVERPROPERTY('ProductLevel')   AS product_level,
       SERVERPROPERTY('Edition')        AS edition;

Interpretation: a product_version starting with 13.0 is SQL Server 2016. You need product_level = SP3 (build 13.0.6300.2 or later) both for ESUs and for a direct upgrade. The edition decides whether ESUs are an option at all.

Amazon RDS users: check your engine version now

The RDS for SQL Server version page says creation of new 2016 instances was disabled from 15 January 2026. Remaining 2016 instances are scheduled to move to SQL Server 2019 (latest minor version) in their maintenance windows. If you want 2022 or 2025 instead, upgrade before AWS does it for you.

Can you keep running SQL Server 2016 with Extended Security Updates?

Yes, for up to three years, with conditions. The ESU overview and FAQ set these terms for SQL Server 2016:

  • Editions: Enterprise and Standard only. Express, Web, and Developer editions cannot subscribe.
  • Delivery: connect the instance to Azure Arc (free to connect), or run it on an Azure VM registered with the SQL IaaS Agent extension. Outside Azure you need Software Assurance under an EA, EAS, SCE, or EES agreement, or Arc pay-as-you-go billing.
  • Not free on Azure VMs: unlike SQL Server 2014, SQL Server 2016 on an Azure VM pays for ESUs.
  • Content: only security updates rated Critical by the Microsoft Security Response Center, released when needed. No features, functional fixes, or general support.
  • Patch level: you must run the latest service pack (SP3), because Microsoft builds ESUs only for it.
  • Late joiners pay back: billing starts at midnight UTC on 15 July 2026. Subscribing later adds a one-time bill-back to that date.

Licensing is per virtual core, with a 4-core minimum per VM. Microsoft publishes the rates on its ESU pricing page, so price your own core count there.

Treat ESUs as a bridge

No non-security bug in SQL Server 2016 will be fixed again. Put an upgrade date on the ESU purchase order.

Should you upgrade to SQL Server 2022 or SQL Server 2025?

SQL Server 2025 became generally available on 18 November 2025, according to its lifecycle page. It adds three years of support over SQL Server 2022 and larger Standard edition limits. It also removes components some 2016 estates still use and tightens encryption defaults.

SQL Server 2016, 2022, and 2025 side by side

Switch versions to see what changes for support dates, limits, and components you may still run

SQL Server 2016

AreaSQL Server 2016
Support, as of November 2026Extended support ended 14 July 2026; ESUs to July 2029
Default compatibility level130
Standard edition limitsLesser of 4 sockets or 24 cores; 128 GB buffer pool
Web editionAvailable
Query StoreAvailable, off by default
Data Quality Services and Master Data ServicesIncluded
Reporting ServicesSQL Server Reporting Services
Full-text word breakersLegacy (version 1) binaries

SQL Server 2022

AreaSQL Server 2022
Support, as of November 2026Mainstream to January 2028; extended to January 2033
Default compatibility level160
Standard edition limitsLesser of 4 sockets or 24 cores; 128 GB buffer pool
Web editionAvailable
Query StoreOn by default for new databases
Data Quality Services and Master Data ServicesIncluded
Reporting ServicesSQL Server Reporting Services
Full-text word breakersLegacy (version 1) binaries

SQL Server 2025

AreaSQL Server 2025
Support, as of November 2026Mainstream to January 2031; extended to January 2036
Default compatibility level170
Standard edition limitsLesser of 4 sockets or 32 cores; 256 GB buffer pool
Web editionDiscontinued
Query StoreOn by default for new databases and for readable secondaries
Data Quality Services and Master Data ServicesRemoved
Reporting ServicesConsolidated into Power BI Report Server
Full-text word breakersLegacy binaries removed; existing indexes must be rebuilt as version 2

Rule of thumb: if you run DQS, MDS, Web edition, or SSRS, SQL Server 2022 is the shorter move. Otherwise SQL Server 2025 gives you the longer support runway from a single upgrade.

Sources for the table: the lifecycle pages for SQL Server 2022 and 2025, the edition feature pages, What's new in SQL Server 2025, and the discontinued features list.

SQL Server 2025 breaking changes to check first

The SQL Server 2025 breaking changes page names linked servers, replication with a remote distributor, remote log shipping monitors, and full-text search. With Microsoft OLE DB Driver 19, linked servers must set Encrypt and need a trusted certificate; otherwise connections fail with "The certificate chain was issued by an authority that is not trusted."

sql
-- Run on the 2016 instance: what will meet the stricter defaults?
SELECT name, provider, data_source
FROM sys.servers
WHERE is_linked = 1;

SELECT OBJECT_NAME(object_id) AS table_name, fulltext_catalog_id
FROM sys.fulltext_indexes;

Interpretation: every linked server listed needs a certificate check before a 2025 cutover. Every full-text index listed fails its queries with error 30010 after an in-place upgrade to 2025 until it is rebuilt as a version 2 index.

Can SQL Server 2016 upgrade directly to SQL Server 2022 or 2025?

Yes, from SP3 or later. The supported upgrade pages for SQL Server 2022 and SQL Server 2025 both list "SQL Server 2016 (13.x) SP3 or later" as a source. Standard edition can stay Standard or move to Enterprise. A 2016 Web edition instance must become Standard or Enterprise on 2025.

The operating system is the usual blocker. SQL Server 2022 needs Windows Server 2016 or later, and SQL Server 2025 needs Windows Server 2019 or later. If the host runs an older Windows Server, such as 2012 R2, Setup cannot upgrade the instance in place.

Reading the version, host OS, and compatibility levels

Illustrative output: the shape matches sqlcmd on SQL Server 2016 SP3, but the values are examples

sqlcmd: sql2016-01
1> SELECT @@VERSION;2> SELECT name, compatibility_level FROM sys.databases;3> GOMicrosoft SQL Server 2016 (SP3) (KB5003279) - 13.0.6300.2 (X64) Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) name compatibility_level----------------- -------------------master 130tempdb 130model 130msdb 130Sales 130Archive 110

Two findings on one screen: Windows Server 2012 R2 cannot host SQL Server 2022 or 2025, so this instance moves side by side. The Archive database keeps level 110 after the move, because restored and upgraded databases keep their level.

For an in-place upgrade on a supported host, Setup can run unattended. On SQL Server 2025, an instance with Data Quality Services installed fails the Feature Rules check unless you add /IACCEPTDQUNINSTALL, according to the 2025 known issues.

bash
setup.exe /QS /ACTION=Upgrade /INSTANCENAME=MSSQLSERVER /IACCEPTSQLSERVERLICENSETERMS /IACCEPTDQUNINSTALL

Interpretation: this upgrades the default instance with a progress window and no prompts. Drop /IACCEPTDQUNINSTALL for SQL Server 2022. The same known issues page says an upgrade from 2016 can fail if the Visual C++ 2022 Redistributable (14.34 or later) is missing, so install it first.

How do you find blockers and deprecated features before upgrading?

Data Migration Assistant (DMA) is gone. Its documentation now states that DMA was retired on 16 July 2025. For version upgrades, Microsoft points to the migration component in SSMS, which needs SSMS 21 or later and the Hybrid and Migration workload in the Visual Studio Installer.

Its Upgrade Assessment reports breaking changes, behavior changes, and deprecated features per database, with affected objects and fixes. Point it at Extended Events or Profiler trace files to assess ad hoc application queries too. It can also migrate databases and logins by backup and restore, except databases with transparent data encryption (TDE).

Code in the database is only half of the picture. The engine counts every call to a deprecated feature since the last restart:

sql
SELECT RTRIM(instance_name) AS deprecated_feature,
       cntr_value           AS uses_since_restart
FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%:Deprecated Features%'
  AND cntr_value > 0
ORDER BY cntr_value DESC;

Interpretation: each row is a deprecated feature called since startup, often by application or driver code the assessment cannot see. Run it after a full business cycle, including month-end jobs.

Deprecated is not removed

Most deprecated features still work on 2022 and 2025. The removals that block an upgrade are in the discontinued list: DQS, MDS, Synapse Link, and Purview access policies in 2025, and Hadoop external data sources for PolyBase in 2022.

In-place or side-by-side: which upgrade method fits?

An in-place upgrade runs Setup on the existing host. It keeps the instance name, logins, jobs, and linked servers, but the instance is down for the whole upgrade, and the only rollback is a rebuild and restore. A side-by-side move builds a new instance, copies data into it while 2016 keeps serving, and switches over in a short window.

Choosing the route off SQL Server 2016

Assess first; the host operating system and your outage budget then pick the route

In-place or side-by-side upgrade decision for SQL Server 2016 A SQL Server 2016 SP3 instance is first assessed with the SSMS migration component. If the host operating system supports the target version and the business accepts a full outage, upgrade in place on the same host. If you need a new operating system, new hardware, or a short cutover, build a new host and move side by side, which is the main path. If you are not ready to move yet, Extended Security Updates through Azure Arc cover the instance until July 2029 while you plan. SQL Server 2016 SP3 baseline Assess SSMS migration In-place same host Side-by-side new host ESU bridge Azure Arc, to 2029 OS supported, outage OK new OS or HA not ready yet

Default to side-by-side: it is the only route with a tested rollback, and it is the only route when the host runs Windows Server 2012 R2.

Three side-by-side techniques cover most estates:

  • Backup and restore. The outage covers the full backup, copy, and restore, so it suits small databases.
  • Log shipping. Seed once, ship logs, and restore only the tail in the window. Works on Standard edition.
  • Distributed availability group. For Enterprise estates already on availability groups (AGs).

How do you run a side-by-side upgrade with log shipping?

The log shipping upgrade guide sets the rules. The secondary can run a newer version than the primary, never the reverse, because "a backup created on a newer version of SQL Server can't be restored on an older version." The secondary database is upgraded only when it is brought online, and RESTORE WITH STANDBY is not supported for a database that needs upgrading. So the new server cannot be read before cutover.

Side-by-side cutover from SQL Server 2016 with log shipping

Eight steps; steps 5 to 7 are the outage window

  1. Build the new instance

    Install SQL Server 2022 or 2025 on a supported Windows Server at the latest cumulative update. Match the server collation.

    SELECT SERVERPROPERTY('Collation');
  2. Copy server-level objects

    Logins, Agent jobs, linked servers, and credentials live in master and msdb, so they do not travel with the database. Script them and recreate them.

  3. Seed from a full backup

    Restore with NORECOVERY so later log backups can apply. Add MOVE clauses if the file paths differ.

    RESTORE DATABASE Sales FROM DISK = N'\\bk01\sql\Sales_full.bak' WITH NORECOVERY, STATS = 10;
  4. Ship logs until cutover

    Configure log shipping in NORECOVERY mode, not STANDBY. Watch the restore lag until it is a few minutes behind at most.

  5. Stop writes, take the tail-log backup

    Outage starts

    NORECOVERY leaves the 2016 copy in RESTORING, so no late write can land there.

    BACKUP LOG Sales TO DISK = N'\\bk01\sql\Sales_tail.trn' WITH NORECOVERY;
  6. Restore the tail and recover

    Outage

    Apply any remaining logs first. Recovery upgrades the database to the new internal version.

    RESTORE LOG Sales FROM DISK = N'\\bk01\sql\Sales_tail.trn' WITH RECOVERY;
  7. Repoint and smoke-test

    Outage ends

    Switch the DNS alias or connection strings, then run read and write checks from each application.

  8. Back up and start the baseline

    Take a full backup on the new server, keep compatibility level 130, and confirm Query Store is capturing.

    ALTER DATABASE Sales SET QUERY_STORE = ON;

Rollback point: until applications write to the new server in step 7, run RESTORE DATABASE Sales WITH RECOVERY on 2016 and point them back. After that, 2016 cannot receive the new writes, because backups and logs only flow to a newer version.

After cutover, recreate index and integrity maintenance on the new server. If you use Ola Hallengren's maintenance solution, install it fresh on the new instance rather than copying the 2016 job definitions. On SQL Server 2025, also repopulate or rebuild full-text catalogs.

When a distributed availability group fits better

A distributed availability group can join a 2016 AG to an AG on a higher version, with limits. Automatic seeding does not work toward a higher version, so set SEEDING_MODE = MANUAL and seed with backup and restore, or the migration fails with error 946. The new AG is not readable until you fail over to it, and you cannot fail back to 2016 afterwards.

sql
-- On the SQL Server 2016 primary
CREATE AVAILABILITY GROUP [dag_upgrade]
   WITH (DISTRIBUTED)
   AVAILABILITY GROUP ON
      'ag2016' WITH (
         LISTENER_URL = 'tcp://ag2016-lsn.corp.local:5022',
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
         FAILOVER_MODE = MANUAL,
         SEEDING_MODE = MANUAL
      ),
      'ag2022' WITH (
         LISTENER_URL = 'tcp://ag2022-lsn.corp.local:5022',
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
         FAILOVER_MODE = MANUAL,
         SEEDING_MODE = MANUAL
      );

Interpretation: both sides need an AG with a listener. At cutover, stop traffic, switch to synchronous commit, and confirm both sides report the same last hardened LSN. That check matters because a SQL Server 2016 distributed AG fails over only with FORCE_FAILOVER_ALLOW_DATA_LOSS.

When should you raise the database compatibility level?

Not on upgrade day. The ALTER DATABASE compatibility level reference says restored and upgraded databases keep their existing level, and that from level 130 on, new query optimizer changes ship only under the newest level. A database that stays at 130 on SQL Server 2022 keeps the SQL Server 2016 cardinality estimator, so plans should change little on day one.

Microsoft's recommended upgrade workflow is: upgrade without changing the level, enable Query Store, capture a baseline for a business cycle, raise the level, then use Query Store to find and fix regressions. Query Store exists on SQL Server 2016 and stores its data inside the user database, so start the baseline before the move.

sql
-- On SQL Server 2016, weeks before the upgrade
ALTER DATABASE Sales SET QUERY_STORE = ON
    (OPERATION_MODE = READ_WRITE, QUERY_CAPTURE_MODE = AUTO);

SELECT actual_state_desc, desired_state_desc, readonly_reason
FROM Sales.sys.database_query_store_options;

Interpretation: actual_state_desc should read READ_WRITE. If it reads READ_ONLY, check readonly_reason; Query Store has usually hit its size limit and has stopped capturing.

sql
-- After the baseline period on the new server
ALTER DATABASE Sales SET COMPATIBILITY_LEVEL = 160;  -- 170 on SQL Server 2025

-- A query regressed: pin its known good plan from the baseline
EXEC sys.sp_query_store_force_plan @query_id = 4127, @plan_id = 88;

Interpretation: take the IDs from the Regressed Queries report in SSMS. Level 160 enables parameter sensitive plan optimization and cardinality estimation feedback; 170 adds optional parameter plan optimization and OAEP-256 key encryption padding. If forcing fails, set the level back to 130 and work one query at a time.

Edition matters for automatic tuning

Automatic plan correction, which forces the last good plan for you, is an Enterprise edition feature on SQL Server 2022. On Standard edition, plan forcing is manual, so schedule time to review Query Store in the week after the level change. Our Query Store plan regression guide covers the workflow.

What about Azure SQL Managed Instance or Amazon RDS?

Azure SQL Managed Instance. The Managed Instance link replicates from SQL Server 2016 SP3 with the matching Azure Connect pack (13.0.7000.253), on Windows only. From 2016 the link is one way: you can fail over to Azure, but you cannot fail back to SQL Server through the link. Databases with FILESTREAM, FileTable, or multiple log files cannot link. For the platform choice, see our Azure SQL MI vs Azure VM vs Azure SQL Database comparison.

Amazon RDS for SQL Server. RDS lists SQL Server 2022 and 2025 as supported. If you do nothing, your 2016 instance lands on 2019, whose end of support AWS lists as January 2030. Upgrade on your own schedule instead:

bash
aws rds describe-db-instances \
    --query "DBInstances[?starts_with(Engine, 'sqlserver')].[DBInstanceIdentifier,Engine,EngineVersion]" \
    --output table

aws rds modify-db-instance \
    --db-instance-identifier sales-prod \
    --engine-version 16.00.4305.5.v1 \
    --allow-major-version-upgrade \
    --apply-immediately

Interpretation: any EngineVersion starting with 13.00 is still on 2016. The engine version in the second command is a SQL Server 2022 build from the RDS version table as of November 2026; list current builds with describe-db-engine-versions before you run it. AWS recommends rehearsing the upgrade first on an instance restored from a snapshot.

Frequently asked questions

When did SQL Server 2016 support end?

Extended support for SQL Server 2016 ended on 14 July 2026. Microsoft's lifecycle page shows the cutoff as 06:59 Pacific time on 15 July. After that date there are no security updates or support cases unless you subscribe to Extended Security Updates, which are available for Enterprise and Standard editions until 17 July 2029.

Can I upgrade SQL Server 2016 directly to SQL Server 2025?

Yes, if the instance runs SQL Server 2016 SP3 or later. Microsoft lists 2016 SP3 as a supported source for both SQL Server 2022 and SQL Server 2025. The host must run Windows Server 2019 or later for 2025, and Web edition must move to Standard or Enterprise because 2025 has no Web edition.

What replaced Data Migration Assistant for SQL Server upgrades?

Microsoft retired Data Migration Assistant on 16 July 2025. For upgrades to a newer SQL Server version, use the migration component in SQL Server Management Studio 21 or later. Install the Hybrid and Migration workload, then run Upgrade Assessment to list breaking changes, behavior changes, and deprecated features per database.

Should I change the compatibility level when I upgrade from SQL Server 2016?

Not at first. Upgraded and restored databases keep compatibility level 130, which keeps SQL Server 2016 query optimizer behavior. Microsoft recommends enabling Query Store, capturing a baseline over a business cycle, and only then raising the level to 160 or 170. You then fix any regressed queries by forcing the earlier plan.

Are SQL Server 2016 Extended Security Updates free on Azure?

No. SQL Server 2014 received free ESUs on Azure VMs, but Microsoft changed this for SQL Server 2016. You can subscribe to paid ESUs on an Azure VM through the SQL IaaS Agent extension, or anywhere else through Azure Arc. Moving to Azure SQL Managed Instance removes the need for ESUs entirely.

Key takeaways

  • SQL Server 2016 has had no free security fixes since 14 July 2026; ESUs cover Enterprise and Standard to July 2029 and are a bridge, not a plan.
  • Choose SQL Server 2025 for the longer runway unless you depend on DQS, MDS, Web edition, or SSRS; then SQL Server 2022 is the shorter move.
  • Check SP3, the host OS, linked servers, and full-text indexes first, and assess with the SSMS migration component, because DMA is retired.
  • Prefer a side-by-side move with log shipping or a distributed AG: the outage shrinks to the tail-log restore, and 2016 stays as the rollback until the first new write.
  • Keep compatibility level 130 on day one, baseline with Query Store, then raise the level and force plans where needed.

Plan your SQL Server 2016 upgrade with JusDB

JusDB's SQL Server migration team can review your SQL Server 2016 instances against the 2022 and 2025 requirements, run the upgrade assessment, and plan a side-by-side cutover with log shipping or a distributed availability group, including the rollback point and the compatibility level plan.

Bring your instance list with versions, editions, host operating systems, and maintenance windows. Your team approves every production change.

Share this article

Database engineering notes

Articles like this one, in your inbox. No spam, unsubscribe anytime.

JusDB Team

Official JusDB content team

Keep reading

Kafka 4.0 Without ZooKeeper: KRaft Migration for CDC Pipelines

Move a ZooKeeper-mode Kafka cluster to Kafka 4.x through the 3.9 bridge: controller quorum design, migration phases, rollback points, and what to check in Debezium and Connect.

Kafka19 minNov 8, 2026
Read

ProxySQL 3.0: PostgreSQL Support and What Changed for MySQL Users

Find out which ProxySQL 3.0 release to run, what its PostgreSQL support covers, what changed for MySQL users since 2.7, and how to upgrade a node or a cluster with a rollback point.

PostgreSQL20 minNov 7, 2026
Read

Percona Operators for MySQL, PostgreSQL, and MongoDB Compared

Compare the four Percona Kubernetes operators as of November 2026: current versions, GA and tech preview features, failover, proxies, backups and PITR, upgrades, TLS, and PMM.

PostgreSQL20 minNov 4, 2026
Read