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.
- 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.
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.
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.
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
| Area | SQL Server 2016 |
|---|---|
| Support, as of November 2026 | Extended support ended 14 July 2026; ESUs to July 2029 |
| Default compatibility level | 130 |
| Standard edition limits | Lesser of 4 sockets or 24 cores; 128 GB buffer pool |
| Web edition | Available |
| Query Store | Available, off by default |
| Data Quality Services and Master Data Services | Included |
| Reporting Services | SQL Server Reporting Services |
| Full-text word breakers | Legacy (version 1) binaries |
SQL Server 2022
| Area | SQL Server 2022 |
|---|---|
| Support, as of November 2026 | Mainstream to January 2028; extended to January 2033 |
| Default compatibility level | 160 |
| Standard edition limits | Lesser of 4 sockets or 24 cores; 128 GB buffer pool |
| Web edition | Available |
| Query Store | On by default for new databases |
| Data Quality Services and Master Data Services | Included |
| Reporting Services | SQL Server Reporting Services |
| Full-text word breakers | Legacy (version 1) binaries |
SQL Server 2025
| Area | SQL Server 2025 |
|---|---|
| Support, as of November 2026 | Mainstream to January 2031; extended to January 2036 |
| Default compatibility level | 170 |
| Standard edition limits | Lesser of 4 sockets or 32 cores; 256 GB buffer pool |
| Web edition | Discontinued |
| Query Store | On by default for new databases and for readable secondaries |
| Data Quality Services and Master Data Services | Removed |
| Reporting Services | Consolidated into Power BI Report Server |
| Full-text word breakers | Legacy 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."
-- 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
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.
setup.exe /QS /ACTION=Upgrade /INSTANCENAME=MSSQLSERVER /IACCEPTSQLSERVERLICENSETERMS /IACCEPTDQUNINSTALLInterpretation: 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:
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.
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
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
-
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'); -
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.
-
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; -
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.
-
Stop writes, take the tail-log backup
Outage startsNORECOVERY 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; -
Restore the tail and recover
OutageApply 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; -
Repoint and smoke-test
Outage endsSwitch the DNS alias or connection strings, then run read and write checks from each application.
-
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.
-- 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.
-- 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.
-- 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.
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:
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-immediatelyInterpretation: 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.