1. The 6Rs applied to SQL Server
| R | For SQL Server it means | Typical share of an estate |
|---|---|---|
| Rehost | Same SQL Server on a cloud VM (Azure VM / EC2) | 30–50% |
| Replatform | Managed SQL Server (Azure SQL MI, Azure SQL DB, RDS) | 30–50% |
| Refactor | Change engine (Aurora PostgreSQL / Babelfish, PostgreSQL) | 5–15% |
| Retire | Unused databases, old copies | 10–20% (always more than expected) |
| Retain | Stays on-premises (latency, regulation, end-of-life app) | Some |
| Repurchase | Replace the app with SaaS | Some |
2. Targets side by side
| Target | SQL Server compatibility | You manage | Notes |
|---|---|---|---|
| SQL Server on Azure VM / EC2 | 100% | OS, SQL, patching, HA, backups (helped by the SQL IaaS extension on Azure) | Fastest move; least modernisation |
| Azure SQL Managed Instance | Very high (Agent, cross-DB queries, CLR, linked servers, Service Broker within the instance) | Schema and queries | The usual replatform target for apps that use instance features |
| Azure SQL Database | Database-scoped only (no Agent, no cross-DB queries) | Schema and queries | Best for modern, single-database apps; serverless and Hyperscale options |
| Amazon RDS for SQL Server | High, with restrictions (no sysadmin, limited OS-level features) | Schema and queries | Managed backups, Multi-AZ |
| RDS Custom for SQL Server | Near 100% with OS and sysadmin access | Some OS tasks; AWS automates the rest | For apps needing OS access, custom agents or settings |
| Aurora PostgreSQL + Babelfish | Partial T-SQL and TDS protocol support | Code changes for unsupported features | Removes SQL Server licences; requires testing |
3. Decision flow
Does the app need OS access, unsupported features or a specific SQL version? → VM / EC2 (or RDS Custom on AWS)
Uses SQL Agent, cross-database queries, CLR, linked servers, DB Mail? → Azure SQL MI / RDS (check the feature list)
Single database, modern app, no instance features? → Azure SQL Database (or RDS)
Strong goal to drop SQL Server licences and code can change? → Babelfish / PostgreSQL (refactor)
Cloud choice already made by the business? → Use that cloud's equivalent row
4. Waves
- Wave 0 (pilot): 3–5 low-risk databases, to prove networking, identity, backups and monitoring.
- Wave 1: dev and test copies, plus small Tier 3 apps.
- Waves 2–n: grouped by application, not by server, because apps that share databases or linked servers have to move together.
- Last waves: Tier 1 and complex databases, with rehearsed cutovers.
5. Success measures
- Databases migrated per month, against plan.
- Incidents and rollbacks per wave.
- Performance against the on-premises baseline (p95 query time, batch duration).
- Run cost against the business case, including licence savings.
Tip
Don't pick one target for the whole estate. The best programmes use a mix: managed instances for most apps, VMs for the awkward 20%, and refactoring only where there's a clear payback.
In this series: discovery and assessment, licensing, sizing, cutover and validation, then step-by-step guides for each Azure and AWS path.