TLDR: Three ways to run SQL Server in Azure. Each one wins in different scenarios. Azure SQL Database gives you simplicity. SQL Server on a VM gives you full control. Managed Instance aims to bridge the gap between full VM control and database-as-a-service simplicity. The right choice comes down to your workload, your team, and which SQL Server features you actually use — not which ones you think you use. This guide breaks down every category with real pricing so you can make the call.
How to Use This Guide
We get asked “which Azure SQL option should we pick?” almost every week. The comparison tables below cover every technical dimension. But before you dive into feature-by-feature comparisons, read the two sections that follow — they’ll save you from the most expensive mistakes we see in the field.
Before You Compare: Two Mistakes That Cost More Than the Wrong Tier
Mistake #1: SQL Server Sprawl
Before you choose between Azure SQL Database, VM, or Managed Instance — ask a simpler question: do you actually need this many instances?
We walk into environments all the time where every application has its own SQL Server on its own VM. One app. One instance. One VM. Multiply that by 30, 50, or 100 applications and you’ve got a cost and management problem that no Azure tier can fix.
Some of these environments can be consolidated down to a handful of instances. The savings aren’t trivial. Address sprawl first, then pick your Azure deployment model.
Mistake #2: “PaaS Means No DBA Needed”
This is one of the most persistent myths in the Azure SQL space. Azure SQL Database and Managed Instance handle infrastructure — patching, backups, high availability. They do not handle your queries, your indexes, your data model, or your capacity planning.
You still need someone who understands SQL Server performance. The DBA role shifts from infrastructure management to performance optimization, governance, and cost control — but it doesn’t disappear.
Deployment and Management
| Feature | SQL Server on Azure VM | Azure SQL Managed Instance (MI) | Azure SQL Database |
|---|---|---|---|
| Deployment | Full control over SQL Server installed on a VM | Fully managed service, SQL Server instance-like | Fully managed, database-as-a-service (DBaaS) |
| Management | Self-managed (OS, patches, backups) | Automated management (backups, patches, upgrades) | Fully automated (backups, patches, high availability) |
| Customization | Full control over SQL Server and OS settings | Limited customization, but most instance-level configurations | Least customizable, database-level settings only |
| Use Case | Full flexibility for custom SQL environments | Ideal for migrating existing SQL workloads with minimal refactoring | Best for cloud-native applications or lightweight workloads |
| Red9 support | Proactive Red9 monitoring and tuning (including auto-tuning and auto-fix issues), full support and maintenance | Limited Red9 monitoring, more complex tuning, not supported auto-tuning or auto-issue fixing. | No Red9 monitoring, only manual tuning and maintenance. |
A word on “lift and shift”: Don’t assume migrating to a VM is a push-button. Azure Migrate and Database Migration Service help, but you’re still handling networking, VPNs, and infrastructure setup. Budget for it accordingly.
Maintenance and Operations
| Feature | SQL Server on Azure VM | Azure SQL Managed Instance (MI) | Azure SQL Database |
|---|---|---|---|
| Maintenance Responsibility | User manages everything (patching, backups) | Managed by Azure (backups, high availability, patches) | Fully managed by Azure |
| Operational Control | Full control over the OS and SQL Server | Control over SQL instance, but limited to supported features | Limited to database-level operations |
| Backups | Red9 backup automation, point-in-time restore | Azure automated backups, point-in-time restore | Azure automated backups, point-in-time restore |
Scalability and Performance
| Feature | SQL Server on Azure VM | Azure SQL Managed Instance (MI) | Azure SQL Database |
|---|---|---|---|
| Scalability | Manual scaling by changing VM size | Built-in scalability through service tiers | Easy scaling (elastic pools, serverless options available) |
| Performance | Performance tied to VM size and configuration | Performance optimized via built-in features (tiers) | Performance tied to service tier (vCore or DTU model) |
| Elasticity | Custom configurations based on VM and SQL Server | Limited to available instance sizes | Offers elasticity through elastic pools and serverless options |
Tip: Azure SQL Database Serverless is excellent for dev, QA, staging, and batch processing workloads. It scales up and down automatically, so you’re not paying for idle compute during off-hours.
Features and Capabilities
| Feature | SQL Server on Azure VM | Azure SQL Managed Instance (MI) | Azure SQL Database |
|---|---|---|---|
| SQL Server Version | Any version you install (2012, 2014, 2016, 2025 etc.) | Built on Enterprise Edition SQL Server | Managed SQL platform that often receives new engine features before boxed SQL Server releases |
| SQL Feature Support | Full support, including SSRS, SSIS, SSAS | SSIS is available, but no SSRS/SSAS | No SSRS/SSAS/SSIS, SQL Agent support directly |
| Cross-Database Queries | Full support | Supported across databases in the same instance | Limited (possible via elastic queries) |
| Custom Software | Full support (can install any third-party tools) | No ability to install custom software | No ability to install custom software |
Cross-database queries: If your application relies on them, Azure SQL Database is off the table. This single limitation is a dealbreaker for many environments and should be one of the first things you check.
SSIS migration: Moving SSIS packages to Azure Data Factory can easily turn into a project of its own. If you have a large SSIS footprint and don’t want a lengthy migration effort, SQL Server on VM is often the pragmatic choice. Managed Instance supports SSIS through the Azure-SSIS Integration Runtime, but it’s not the same as running native SSIS on a VM.
Feature audit reality check: Most teams overestimate which SQL Server features they actually need. Before ruling out Azure SQL Database or Managed Instance, run a proper feature discovery assessment. You might find that the features you think are blocking a PaaS move aren’t even in use.
Network and Security
| Feature | SQL Server on Azure VM | Azure SQL Managed Instance (MI) | Azure SQL Database |
|---|---|---|---|
| Network Configuration | Full control over networking, security groups | Virtual Network (VNet) support with private IP | Public and private endpoints supported, VNet integration via private link |
| Security | User controls security (firewalls, encryption) | Built-in security features, managed by Azure | Built-in security features, managed by Azure |
| Authentication | Full control (Windows Authentication, certificates, etc.) | Supports Active Directory and SQL Authentication | Supports Active Directory and SQL Authentication |
Compliance and data residency: Industries like financial services, healthcare, and government often require OS-level control for regulatory compliance and data residency. This typically tips the decision toward SQL Server on VM, or in some cases Managed Instance with VNet isolation. If compliance is a factor in your environment, evaluate this early — it can override all other technical considerations.
High Availability and Disaster Recovery
| Feature | SQL Server on Azure VM | Azure SQL Managed Instance (MI) | Azure SQL Database |
|---|---|---|---|
| High Availability | Supports all available options, like Always On Availability Groups, failover clustering | Built-in high availability with automatic failover | Built-in high availability with automatic failover |
| Disaster Recovery | Supports all available options, like Always On Availability Groups, Log Shipping, Replication | Built-in disaster recovery options | Automated DR with geo-replication options |
Worth knowing: Configuring Always On Availability Groups in Azure can actually be more complex than on-prem. The networking layer, load balancers, and cloud-specific considerations add steps that don’t exist in a traditional data center setup. If your team doesn’t want to deal with AG (Availability Groups) configuration, Managed Instance’s built-in HA is a real advantage.
Pricing and Licensing
| Feature | SQL Server on Azure VM | Azure SQL Managed Instance (MI) | Azure SQL Database |
|---|---|---|---|
| Pricing | Pay for the VM size, SQL Server license, and storage separately | Pay for the instance based on the service tier (vCores) | Pay for the database (vCore or DTU-based) |
| Licensing | SQL Server license (BYOL or included in Azure cost) | SQL Server license included in the cost | SQL Server license included in the cost |
| Price comparison (8vCore + 4TB Data size + Backup), Single Instance | $1,890.00 (SQL Standard, E8bdsv_5, Premium SSD v2 – 12k IOPS + 400 MB/s, max IOPS 80k + 1200 MB/s) | $2,533.87 (Next Generation General Purpose, max IOPS 12k + 400MB/s, max TempDB size 192GB) $4,820.70 (Business Critical, database size limit 1TB) $17,492.40 (Business Critical, 32vCore, database size limit 4TB) |
$2,303.72 (General purpose, Per each database, database size limit of 2TB, max IOPS 2,5k + 36 MB/s) $5,555.40 (General purpose, Per each database, 24 vCore and database size limit of 4TB, max IOPS 7,6k + 50 MB/s) $3,682.27 (Hyperscale, per each database, TempDB max size 256GB) |
| Price comparison (8vCore + 4TB Data size + Backup + DR/HA) | $2,769.01 (SQL Standard + DR, E8bdsv_5, Premium SSD v2 – 12k IOPS + 400 MB/s, max IOPS 80k + 1200 MB/s) $3,628.22 (SQL Standard + DR/HA, E8bdsv_5, Premium SSD v2 – 12k IOPS + 400 MB/s, max IOPS 80k + 1200 MB/s) |
$3,479.25 (Next Generation General Purpose, max IOPS 12k + 400MB/s, max TempDB size 192GB) | $4,023.65 (General purpose, Per each database, database size limit of 2TB) $9,330.69 (General purpose, Per each database, 24 vCore and database size limit of 4TB) $4,749.00 (Hyperscale, per each database, TempDB max size 256GB) |
The pricing reality: Managed Instance is often the most expensive option for comparable compute and storage configurations. We’ve seen the pricing push teams toward SQL Server on VM even when they’d technically prefer the managed route. The right technical choice isn’t always the feasible one, budget-wise — run the full cost model before committing.
Cost tip for non-production: For dev, QA, and staging environments on VMs, use SQL Server Developer Edition. It’s free and feature-identical to Enterprise. You don’t need to pay for SQL Server licensing until production.
Azure SQL Database – DTU explanation
DTU (Database Transaction Unit) is a performance measurement used by Azure SQL Database to describe the relative capacity of a database in terms of CPU, memory, reads, and writes. DTUs provide a simplified way to select a performance tier based on the workload requirements of your database, without having to configure and balance individual resources like CPU or IOPS manually.
Components of a DTU
A DTU represents a blended measure of these three main resources:
- CPU: The processing power required for queries and other operations.
- Memory: The amount of RAM available for query execution, caching, and temporary storage.
- Disk I/O:
- Reads: The amount of data read from storage (disk).
- Writes: The amount of data written to storage (disk).
Each DTU tier is designed to offer a balanced amount of these resources. For example, as you move from a lower DTU tier (e.g., Basic) to a higher DTU tier (e.g., Standard or Premium), you get more CPU, memory, and I/O capacity.
How DTU Works
- Performance Tiers: Azure SQL Database offers multiple performance tiers based on DTUs:
- Basic: Suitable for lightweight workloads like small databases or development environments.
- Standard (S0, S1, S2, etc.): Designed for general-purpose workloads with moderate performance requirements.
- Premium (P1, P2, etc.): Meant for high-performance workloads that require high transaction rates and low latency, especially for business-critical applications.
- Resource Scaling: As you choose higher DTU tiers, you get more resources:
- Higher CPU capacity for faster query processing.
- More memory for caching data and query execution.
- Higher IOPS (Input/Output operations per second) for faster reads/writes to storage.
- Simplified Sizing: Instead of managing individual resources (like CPU, memory, or I/O) directly, you select a DTU tier that meets your performance needs. This simplifies the process of sizing and scaling the database.
When to Use DTUs vs. vCores
DTU-based pricing is generally better for:
- Small to medium-sized databases with relatively simple performance needs
- Users who want simplicity in resource management without dealing with specifics of CPU cores and memory allocation
The vCore model is better suited for:
- Large databases or enterprise applications with complex or predictable resource requirements
- Organizations that prefer to manage and configure CPU and memory separately, providing more control and flexibility
How to Decide: The Process We Use
Don’t guess. Work through these steps:
- Audit your feature usage. Run a feature discovery assessment against your current SQL Server instances. Identify which features you actually use — SQL Agent, linked servers, SSIS, cross-database queries, CLR assemblies, Service Broker. Most teams overestimate their requirements. The features you think are blocking a PaaS move might not even be active.
- Measure your workload. Database size, growth rate, IOPS requirements, CPU and memory patterns. The workload usually tells you more than any feature comparison table. A 5 TB database with 50k IOPS narrows your options fast.
- Test application compatibility. Don’t assume your application will work with PaaS limitations. Test it. Cross-database queries, dynamic SQL patterns, temp table usage across connections, server-level DDL triggers — these are the things that break during migration.
- Check for legacy constraints. Some applications are hardcoded to expect specific server names, database names, or OS-level configurations. These constraints can eliminate entire deployment models regardless of what the feature tables say.
- Factor in your team. If you have a strong DBA team, VMs give you the most flexibility and the lowest cost. If you don’t, every hour spent on patching and backup management is an hour not spent on performance and architecture.
- Run the full cost model. Not just compute and storage. Include the labor cost of managing VMs, the licensing implications, reserved instance discounts, and the long-term growth trajectory. The cheapest option on paper isn’t always the cheapest option in practice.
Quick Decision Matrix
| If you need… | Go with… |
|---|---|
| Maximum simplicity, cloud-native app | Azure SQL Database |
| Full SQL Server control, any version | SQL Server on VM |
| SQL Agent, linked servers, cross-DB queries + managed benefits | Managed Instance |
| SSIS without a migration project | SQL Server on VM |
| Regulatory compliance with OS-level control | SQL Server on VM |
| Built-in HA without AG configuration | Azure SQL Database or Managed Instance |
| Lowest cost at scale | SQL Server on VM (typically) |
| Lowest operational overhead | Azure SQL Database |
Some useful URLs
- Overview of Azure SQL Managed Instance resource limits
- Resource limits for single databases using the vCore purchasing model
Bottom Line
If you want simplicity and your workload fits → Azure SQL Database
If you want full control and have the team for it → SQL Server on VM
If you need SQL Server compatibility without the VM overhead → Managed Instance
Let your workload, your team’s capabilities, and your actual feature usage drive the decision. Not marketing materials.
Not sure where your environment lands? Our 110-Point SQL Server Health Check includes a full feature usage audit and Azure readiness assessment — we’ll tell you exactly which option fits and flag anything that could trip you up during migration.
Speak with a SQL Expert
In just 30 minutes, we will show you how we can eliminate your SQL Server headaches and provide operational peace of mind