Skip to main content
  1. Blog/

Identify SQL Server EOL & ESU Costs with azqr

Carlos Mendible
Author
Carlos Mendible

Running SQL Server past its end-of-life date exposes your organization to unpatched security vulnerabilities and growing Extended Security Update (ESU) costs. Understanding exactly which instances are affected — and what it could cost you — is the first step toward a sound modernization strategy.

This post introduces the Azure Quick Review sql-esu plugin, which scans both Arc-enabled SQL Servers and Azure SQL VMs, estimates your possible ESU spend, and recommends migration paths to Azure SQL Managed Instance (SQL MI).

Knowing what you could be paying for ESU — and what you’d save by migrating — turns an abstract compliance concern into a concrete financial decision.

Prerequisites
#

Before you begin, ensure you have:

  • An Azure subscription with SQL Server resources (Arc-enabled or SQL IaaS VMs)
  • Azure CLI installed and authenticated
  • Latest version of azqr installed
  • Reader permissions on the target subscription(s)

The SQL Server EOL Problem
#

Microsoft’s mainstream and extended support lifecycle for SQL Server versions eventually ends. After end of support, you have three options:

  1. Do nothing — run unsupported, unpatched SQL Server (serious security risk)
  2. Purchase ESU — pay for up to 3 years of critical security patches at escalating cost
  3. Migrate — move to a modern, fully managed service like Azure SQL Managed Instance

So how do you know which SQL Server instances are approaching end-of-life, and what the ESU costs will be? The azqr sql-esu plugin automates this discovery and analysis.

Using the azqr sql-esu Command
#

The azqr sql-esu command scans your subscriptions using Azure Resource Graph, covering:

  • Arc-enabled SQL Servers (microsoft.azurearcdata/sqlserverinstances) — on-premises or multi-cloud SQL managed by Azure Arc
  • Azure SQL VMs (microsoft.sqlvirtualmachine/sqlvirtualmachines) — SQL Server running on Azure IaaS VMs

Install the Latest azqr
#

bash -c "$(curl -fsSL https://raw.githubusercontent.com/azure/azqr/main/scripts/install.sh)"

Run the sql-esu Command
#

# Scan all subscriptions
azqr sql-esu

# Scan a specific subscription
azqr sql-esu -s <subscription-id>

Results appear in the “SQL ESU” sheet of the generated Excel report.

Analyzing the Results
#

The plugin produces a detailed table with 27 columns. Here are the most important ones:

ColumnDescription
SubscriptionAzure subscription name
Resource GroupResource group containing the SQL resource
NameSQL Server instance name
LocationAzure region or on-premises location
Cloud TypeArc-enabled (On-Prem) or Azure VM (SQL IaaS)
SQL VersionDetected SQL Server version (e.g., SQL Server 2014)
EditionEnterprise, Standard, Web, Developer, Express, Free
EOL StatusSupported, Upcoming ESU, ESU Active, or Expired
ESU Start DateWhen the ESU window began
ESU End DateWhen ESU support ends (no more patches after this)
vCores / Billable CoresCore count used for cost calculations
SQL License TypePAYG (hourly) or AHUB (bring-your-own SA license)
Est ESU Monthly CostEstimated ESU spend per month
Current Monthly CostSum of applicable components: VM compute (Azure VMs only) + SQL license + ESU (only when in an active ESU window) + patch ops
Migration Target TierRecommended SQL MI tier (General Purpose or Business Critical)
Migration RecommendationSuggested action for this instance
Est SQL MI Monthly CostProjected SQL MI cost after migration
Est SQL MI Monthly SavingMonthly savings vs. current cost
SQL MI Migration VerdictRecommended, Optional, or Not Applicable

Key Areas to Focus On
#

1. Instances with EOL Status = ESU Active or Expired

These are your highest-priority instances. ESU Active means you’re in the paid ESU window — every month of delay adds to your ESU spend. Expired means you’re beyond all support, with no security patches at all.

2. SQL MI Migration Verdict

The plugin provides a verdict for each instance:

  • Recommended — migrating to SQL MI saves money and reduces risk; act now
  • Optional — migration makes sense but isn’t urgent
  • Not Applicable — free editions (Developer, Express) do not incur ESU costs and are excluded from the ESU financial analysis

3. Est SQL MI Monthly Saving

Sort by this column descending to identify the highest-value migration targets. Instances with large savings should be at the top of your migration backlog.

4. Consolidation Ratio

The plugin applies a conservative 2:1 consolidation ratio — two SQL Server instances per one SQL MI — reflecting typical SQL Server utilization of only 10–30%. Your actual savings may be even higher.

5. Cloud Type

Arc-enabled (on-premises) Enterprise instances with Software Assurance may qualify for the Unlimited Virtualization Benefit (UVB), where 1 on-premises core with SA covers up to 4 SQL MI General Purpose vCores. The plugin accounts for this automatically.

Assumptions
#

The plugin’s cost estimates are based on a set of explicit assumptions. Understanding them helps you interpret the numbers correctly — treat them as indicative, not exact.

AssumptionValue / Rule
Pricing basisUSD public list prices — EA, CSP, or negotiated discounts are not applied
ESU cost modelESU annual price follows a Year 1 = 75%, Year 2 = 100%, Year 3 = 125% schedule of the annual license cost; the plugin uses the blended 3-year average (~100%) so estimates are stable regardless of which ESU year you are in
ESU ratesStandard/Web: $139/core/month · Enterprise: $540.50/core/month · Developer/Express/Free: $0
VM compute costEstimated per-core monthly rate derived from the VM SKU size
SQL license (PAYG)Hourly license cost included; AHUB instances are treated as $0 SQL license cost
AHUB default for VMsIf the SQL VM license type is not explicitly set to PAYG, the plugin defaults to AHUB (most enterprise customers have SA)
SQL MI target ratesGP PAYG: $123/vCore/month · GP AHUB: $49/vCore/month · BC PAYG: $367/vCore/month · BC AHUB: $147/vCore/month
Migration target tierAll cases are mapped to General Purpose for a conservative estimate
UVB (Arc Enterprise + AHUB only)1 on-premises core with SA → up to 4 SQL MI GP vCores; sized at max(4, vCores ÷ 4). Azure VMs are excluded — UVB is on-premises only
Consolidation ratioConservative 2:1 (2 SQL Server instances per 1 SQL MI); actual savings may be higher given typical SQL Server utilization of only 10–30%
Patch ops costA fixed monthly estimate for operational overhead of patching out-of-support servers
vCore count for Azure VMsDerived from the VM SKU; well-known legacy SKUs use a hardcoded lookup table, modern SKUs use regex extraction

Actual Microsoft ESU pricing depends on your agreement type, SQL Server version, and whether you pay annually or monthly. Always verify current rates with Microsoft or your licensing partner before making budget decisions.

Hope it helps!

References: