Azure SQL deployment: SQL Database vs Managed Instance vs SQL Server on VMs vs Fabric vs Arc
Verdict: Azure SQL Database for greenfield cloud-native apps. Managed Instance for lift-and-shift needing SQL Agent and cross-database queries. SQL Server on VMs for OS-level control. Fabric for OneLake analytics; Azure Arc to manage instances outside Azure.
| Criterion | Azure SQL Database | Azure SQL Managed Instance | SQL Server on Azure VMs | SQL in Microsoft Fabric | SQL Server enabled by Azure Arc |
|---|---|---|---|---|---|
| Model | PaaS single/pooled database | PaaS instance | IaaS, full OS control | PaaS mirrored to OneLake | Management plane for external SQL |
| Patching | Automatic | Automatic | Customer, or IaaS Agent extension | Automatic | Not applicable |
| Instance features | No SQL Agent or cross-db queries | SQL Agent, cross-db, Database Mail | Full engine | No | Runs on the source engine |
| Max storage | Hyperscale 128 TB | 16 TB | 256 TB | n/a | n/a |
| Choose when | Greenfield cloud-native app | Lift-and-shift needing instance features | OS-level control, CLR, third-party agents | Analytics in Fabric/OneLake | Inventory SQL instances outside Azure |
Rules
- Azure SQL Database is the PaaS default for new cloud-native apps: no OS access, automatic patching, elastic pay-as-you-go scale.
- Managed Instance offers near-100% engine compatibility including SQL Agent, cross-database queries and Database Mail as a fully managed service.
- SQL Server on Azure VMs is IaaS: full OS and engine control for CLR, third-party agents and custom recovery models.
- Azure SQL Database and Managed Instance are auto-patched by Microsoft; VM SQL Server is not, unless the IaaS Agent extension is enabled.
- Max single-database storage: SQL Server on VM 256 TB, Hyperscale 128 TB, Managed Instance 16 TB.
- Resource Governor works only on SQL Server on VM and Managed Instance, not single Azure SQL Database or elastic pools.
Traps
- Managed Instance has the smallest storage ceiling of the three at 16 TB, not the largest.
- PaaS tiers carry a higher guaranteed SLA than IaaS; the VM SLA covers only infrastructure, not database availability.