Skip to content
Cloud Efficiency Hub

Paid SQL Server Edition on Non-Production Azure VMs

The short version

SQL Server on Azure VMs built from pay-as-you-go Web, Standard or Enterprise images include the SQL Server license in the per-second VM price, and that license cost scales with the number of vCPUs.

PointFive Research

Cloud cost research at PointFive

Category
Databases
Reference
CER-0436
Type
Suboptimal Pricing Model

Explanation

Why the waste happens and who it affects.

For development, test and proof-of-concept work Microsoft provides the freely licensed Developer edition, which has all Enterprise features but cannot be used in production; a Developer edition VM is charged only for the VM itself. SQL Server 2025 splits this into Enterprise Developer and Standard Developer editions. For small production workloads within its limits (up to 4 cores, under 1 GB memory, up to 50 GB per database) the free Express edition has the same effect.

Non-production SQL VMs often end up on paid editions because they are cloned from production images, built from the same template, or created from the Marketplace image teams are used to. Because the license is billed for every running second and scales with vCPUs, a paid edition on a dev or test VM pays for a production license it cannot need. Microsoft's pricing guidance for SQL Server on Azure VMs points dev/test and proof-of-concept use to the Developer edition and lists correct VM sizing and shutting down idle VMs as the other cost levers.

Billing model

The pricing dimensions that drive this cost.

SQL Server VM charges depend on the edition recorded for billing.

Pay-as-you-go SQL license
Web, Standard and Enterprise images add a per-second SQL Server license charge that depends on the VM vCPU count
Developer and Express editions
Freely licensed; the VM incurs only compute, storage and networking charges
Edition property
Billing follows the edition property on the SQL virtual machine resource, which must match the installed SQL Server edition
Deallocated VM
Deallocating the VM is the only way to stop charges; stopping from inside the guest OS keeps billing

How to detect

5 checks to find it in your estate.

  • Query Azure Resource Graph for microsoft.sqlvirtualmachine/sqlvirtualmachines and project properties.sqlImageSku (edition) and properties.sqlServerLicenseType, then join to subscriptions, resource groups or tags that mark development, test, QA or sandbox environments
  • Flag non-production SQL VMs whose edition is Standard or Enterprise with license type PAYG, since these pay the SQL license on every running second
  • Review Cost Management for SQL Server license meters on VMs in non-production subscriptions
  • Identify small production instances whose databases, memory use and core needs fit Express edition limits but run a paid edition
  • Make sure self-installed SQL Server VMs are registered with the SQL IaaS Agent extension, otherwise their edition and license type are not visible for this review

How to fix

5 ways to remove the waste.

  • Move non-production instances to Developer edition (Enterprise Developer or Standard Developer on SQL Server 2025); for new environments, deploy from the freely licensed Developer Marketplace images
  • For existing VMs, downgrading the edition means backing up databases, uninstalling SQL Server and reinstalling with Developer or Express media, because the license model setting cannot switch a VM to Developer or Express
  • After reinstalling, re-register with the SQL IaaS Agent extension and set the edition property (az sql vm update --image-sku Developer or Update-AzSqlVM -Sku Developer) with license type PAYG so billing stops; the edition property must match the installed edition
  • Move qualifying lightweight production databases to Express only after confirming it has the features they need, since Express lacks many production features
  • Right-size vCPUs and add auto-shutdown for non-production SQL VMs, deallocating rather than stopping them from the guest OS

Documentation

Vendor references for pricing and configuration.