Azure Database Migration Service: Moving Databases to Azure Without Losing Sleep

Azure Database Migration Service: Moving Databases to Azure Without Losing Sleep

A complete, plain-English guide to how Azure Database Migration Service works: assessment, offline and online migration, architecture, networking, security, cutover, validation, troubleshooting, alternatives and the habits of teams that migrate successfully.

Imagine you run a busy grocery store in an old building. The shelves are crammed, the roof leaks, and you have finally rented a bright new shop across town. Moving is not just carrying boxes. You must decide what to take, what to throw away, how to keep selling while you move, how to make sure nothing is lost or broken, and when exactly to flip the sign on the old door from “Open” to “Closed” and on the new one from “Coming soon” to “Open”. Now imagine the groceries are your company’s most valuable data, and customers keep shopping every second. That is a database migration, and Azure Database Migration Service, usually shortened to DMS, is the moving crew, the truck and the checklist rolled into one managed service.

This guide assumes you know nothing about migration. Every new term is explained when it first appears, with an everyday comparison. We then go deep: how the service reads from a source, how it keeps a copy in step, what happens at the moment of cutover, how to protect the move with networking and security, and how to troubleshoot when something goes wrong. One honest note up front: Microsoft’s migration tooling has been evolving quickly, and some experiences have been renamed, retired or replaced. Throughout the guide we teach the lasting ideas, and we flag where you must check the current official documentation before you commit to a plan.

1What Database Migration Is and Why It Is Hard

Before the tool, we need to understand the job it is built to do.

A migration is a change of home for living data

A database migration means moving a database from one place to another. The old place is called the source, and the new place is called the target. The source might be a server in your own data center, a virtual machine in another cloud, or an older database product. The target is usually a managed database on Azure, such as Azure SQL Database, Azure SQL Managed Instance, Azure Database for PostgreSQL or Azure Database for MySQL. “Managed” means Microsoft operates the servers, patches the software, handles backups and monitors the health, so your team spends less time on plumbing.

Organizations migrate for many reasons. Hardware is old and expensive to renew. A data center contract is ending. Licenses are costly. The business wants elastic capacity, built-in high availability, better security tooling or access to modern analytics and AI services. Sometimes the reason is a merger, and sometimes it is simply a goal of leaving the burden of running servers.

Simple Analogy

Moving a database is like moving a hospital while patients are still being treated. You cannot simply switch the lights off for a weekend. You need a plan to move equipment safely, keep records consistent, and open the new building at a precise moment with everything working.

The three big risks

Every migration fights three enemies. The first is data loss or corruption: something is missed or damaged on the way. The second is downtime: the application is unavailable for longer than the business can tolerate. The third is surprise: the application behaves differently on the new platform because of version differences, unsupported features or changed performance. A good migration plan is mostly a plan to defeat these three risks one by one.

3
core risks: loss, downtime and surprise
2
migration styles: offline and online
5
stages of a healthy migration journey
i
Good to know

The data copy is usually the easy part. Most of the effort in real projects goes into assessment before the move and testing after it. Teams that rush to the copy step often finish last.

2What Azure Database Migration Service Is

A managed service that moves data and, in some cases, keeps the target in step with a live source.

Azure Database Migration Service is a managed Azure offering designed to simplify, guide and automate the movement of databases to Azure. The word “managed” matters: you do not build your own copying machinery. You describe the source, the target and the databases to move, and the service does the heavy lifting, reports progress, and tells you when it is ready for the final switch.

Its central promise is minimal downtime where the scenario allows it. For some source and target combinations the service can perform an online migration, meaning the target is kept continuously synchronized with the live source while users keep working, and the actual downtime shrinks to the short window needed to switch over. For others, only an offline migration is available, where the application must stop writing during the copy.

Simple Analogy

Think of a courier company for valuable parcels. You do not carry the parcels yourself. You tell the courier where they are and where they must go, and the company handles transport, tracking, and a delivery confirmation. DMS is that courier for databases.

A moving landscape: check the current status

Microsoft has offered several experiences under the migration umbrella over the years. There was an original service experience, often called the classic experience, built around creating a service instance in a chosen pricing tier and then creating projects and activities inside it. Newer guided experiences were introduced for particular targets, including a portal-based flow and tooling that used a helper component called a self-hosted integration runtime. For some targets, such as Azure Database for PostgreSQL, a migration capability is now built right into the target service itself. Parts of the older tooling have been announced for retirement and replaced by newer paths.

!
Check Before You Plan

Names, pricing tiers, supported source and target pairs, and which experience is current can change. Before you design a project, open the official Azure migration documentation and confirm the current supported paths for your exact source version and target type. The concepts in this guide stay valid, but the buttons and tier names may differ.

What DMS is not

DMS is not a magic converter for any database to any other. It is not a full application modernization tool. It does not rewrite your application’s queries or stored logic for a different database engine; for that, separate assessment and conversion tools exist. It is not a permanent replication product for ongoing, long-term data synchronization between systems; it is built for a migration project with a beginning and an end.

3Sources, Targets and the Migration Matrix

Every migration is a pair: where from, and where to. The pair decides what is possible.

The most common source for Azure migration projects is Microsoft SQL Server, because so many organizations run it. Its common targets are three different Azure choices, and picking among them is the first big decision.

Target 1

Azure SQL Database

A fully managed database for a single application’s data. Excellent for modern cloud applications, with the least administration, but with some limits on instance-level features.

Target 2

Azure SQL Managed Instance

A managed service with near-complete compatibility with an on-premises SQL Server instance, including many instance-level features. Often the easiest “lift and shift to managed” route.

Target 3

SQL Server on Azure Virtual Machines

Your own SQL Server running on a virtual machine in Azure. Maximum compatibility and control, but you keep operating the server and the operating system.

Other source

MySQL and PostgreSQL

Open-source databases can move to Azure Database for MySQL and Azure Database for PostgreSQL, using migration capabilities that exist in the target service or in DMS, depending on the version of the experience.

Other source

MongoDB

Document databases can migrate to the MongoDB-compatible offerings of Azure Cosmos DB, using migration tooling suited to that path.

Other source

Oracle and others

Moving between different engines is a conversion project, not just a copy. Schema and code must be translated first, usually with separate conversion tools.

Homogeneous versus heterogeneous migrations

A homogeneous migration moves between the same database family, for example SQL Server to Azure SQL. The data types, language and behaviors are largely the same, so the work is mostly copying and compatibility checking. A heterogeneous migration moves between different families, for example Oracle to PostgreSQL. Here the table structures, data types, stored programs and functions all need translation. Heterogeneous projects are typically longer, riskier and need far more testing.

QuestionHomogeneousHeterogeneous
ExampleSQL Server to Azure SQL Managed InstanceOracle to PostgreSQL
Schema workLight: compatibility checks and small fixesHeavy: conversion of structures and code
Application changesOften minimalOften significant
Typical durationWeeks to a few monthsMonths to more than a year
Main riskUnsupported features and performance differencesBehavior differences and incorrect conversions
i
Practical Rule

Whenever you can, change one thing at a time. Moving to a new platform and changing the database engine in the same project multiplies risk. Many teams first move to the same engine in Azure and modernize the engine later.

4Offline and Online Migration

The most important choice for the business is how long the application can be unavailable.

Offline migration

In an offline migration, the source database stops receiving changes, the data is copied to the target, and then the application is pointed at the new database. Downtime lasts for the whole copy and the switch. For a small database this may be minutes. For a very large one it may be many hours. The big advantage is simplicity: there is one moment of copying, a clear starting state, and fewer moving parts that can fail.

Online migration

In an online migration, the service first makes an initial copy of the data while the source continues to work normally. It then keeps applying new changes from the source to the target, so that the two stay almost identical. When you are ready, you pause writes to the source briefly, let the last changes flow across, and switch the application. Downtime is reduced to a short cutover window, often just minutes. The price is more complexity, more prerequisites, a need for steady network connectivity, and the requirement that the source supports the change-capture mechanism the service uses.

sequenceDiagram
  participant App as Application
  participant Src as Source database
  participant DMS as Migration service
  participant Tgt as Target database
  Note over App,Tgt: Phase 1 - Initial copy while users keep working
  App->>Src: Reads and writes continue
  DMS->>Src: Read full data
  DMS->>Tgt: Load full data
  Note over App,Tgt: Phase 2 - Continuous sync of changes
  App->>Src: New changes arrive
  DMS->>Src: Capture changes
  DMS->>Tgt: Apply changes
  Note over App,Tgt: Phase 3 - Cutover
  App->>Src: Stop writes briefly
  DMS->>Tgt: Apply last changes
  App->>Tgt: Switch connection to target
        
FIG 1 — The three phases of an online migration
Simple Analogy

Offline migration is closing the shop for a weekend, loading everything into trucks, and reopening in the new location on Monday. Online migration is stocking the new shop in the background while the old one keeps selling, sending every new delivery to both places, and finally closing the old shop for one short lunch break when the two match.

Online: Advantages

  • Downtime shrinks to a short cutover window
  • Business continues during the long copy
  • You can validate the target while the source is still live
  • Cutover can be scheduled for the quietest hour
  • You can delay the final switch if testing finds an issue

Online: Trade-offs

  • More prerequisites on source configuration
  • Needs stable, sufficient network bandwidth for the whole period
  • Extra load on the source from change capture
  • More moving parts to monitor
  • May need a higher service tier or extra components
!
Common Misconception

“Online means zero downtime.” It does not. There is always a cutover moment where writes must stop briefly and the application must be redirected. Online reduces downtime to minutes; it does not remove it. Plan and communicate that window honestly.

5The Migration Journey in Five Stages

Successful teams follow a repeatable path rather than improvising.

flowchart LR
  A["1. Discover and assess"] --> B["2. Convert schema and fix issues"]
  B --> C["3. Migrate data"]
  C --> D["4. Cutover"]
  D --> E["5. Validate and optimize"]
  E -.->|lessons learned| A
        
FIG 2 — The five stages of a healthy migration journey
1

Discover and assess

Find every database, measure its size and usage, check compatibility with the target, and choose the right target type and size. This is where most surprises are caught cheaply.

2

Convert schema and fix issues

Resolve the compatibility findings. For same-engine moves this means small fixes; for engine changes it means converting structures and code.

3

Migrate data

Use the migration service to copy the data, and for online migrations, keep it synchronized. Monitor throughput and errors.

4

Cutover

Stop writes, apply final changes, switch the application to the target, and keep a rollback plan ready.

5

Validate and optimize

Confirm data correctness and application behavior, tune performance, migrate the remaining server-level items, and retire the source safely.

i
Practical Rule

Rehearse. Run the entire journey at least once on a copy of the data in a non-production environment. The rehearsal reveals durations, failures and missing permissions that no document can predict.

6Discovery and Assessment

You cannot move what you have not found, and you cannot size what you have not measured.

Assessment answers four questions. What databases exist? Are they compatible with the target? What size and performance level does the target need? What is the best target type? Microsoft provides tools for these steps, and a migration project typically uses several of them together.

Tool

Azure Migrate

A central hub for discovering servers and databases across an estate, assessing readiness and suggesting target sizes and estimated costs.

Tool

Data Migration Assistant

A tool that scans SQL Server databases for compatibility problems and feature differences against a chosen target, and reports what will break or change.

Tool

SQL Server Migration Assistant

A family of tools for assessing and converting schemas from other engines, such as Oracle, MySQL and others, toward SQL Server or Azure SQL targets.

Tool

SQL assessment and SKU recommendation

Features that collect performance data over time from the source and recommend a target size that matches real usage instead of guesswork.

Practice

Workload capture

Recording real query activity so it can be replayed against the target to compare behavior and performance before cutover.

What a good assessment reports

Look for features the target does not support, behaviors that changed between versions, deprecated syntax, use of components such as the common language runtime, cross-database queries, linked servers to other systems, scheduled jobs, and special security configurations. Each finding should have a decision beside it: fix, replace, accept or choose a different target.

Simple Analogy

Before moving house, you walk through every room with a clipboard. You note the piano that will not fit the new staircase, the antique that needs special packing, and the appliance that uses a plug the new house lacks. Assessment is that clipboard walk for your databases.

Collect performance data over a full business cycle

Sizing from a single quiet afternoon is a classic mistake. A database busy at month end looks calm in mid-month. Collect usage data over a period that includes your busiest times, such as closing days, sale events and batch windows, and size the target for the peaks plus a safety margin.

ANTI-PATTERN-01 Avoid
Problem

The team sizes the target by matching the old server’s hardware specification one to one, without looking at what the workload really uses.

Why It’s Harmful

Old servers are usually oversized for safety, so you overpay for years. In other cases, the cloud service has different performance characteristics and the match is too small.

Correct Approach

Measure actual usage across a full business cycle and use a recommendation based on that data, then adjust after the move.

7Choosing the Right Target

The target decision shapes cost, effort and future flexibility.

flowchart TD
  A["Start: SQL Server workload"] --> B{"Needs instance-level features such as agent jobs or cross-database queries?"}
  B -->|Yes| C{"Needs operating system access or unsupported features?"}
  C -->|Yes| D["SQL Server on Azure Virtual Machines"]
  C -->|No| E["Azure SQL Managed Instance"]
  B -->|No| F{"Single application database with modern design?"}
  F -->|Yes| G["Azure SQL Database"]
  F -->|No| E
        
FIG 3 — A simplified decision flow for choosing an Azure SQL target
FactorAzure SQL DatabaseSQL Managed InstanceSQL Server on VM
Compatibility with on-premisesGood for database-level featuresVery highComplete
Administration effortLowestLowHighest
Instance-level featuresLimitedMostly supportedFully supported
Operating system accessNoNoYes
Best forNew or modernized applicationsLift and shift with managed benefitsSpecial requirements and legacy dependencies
Simple Analogy

SQL Server on a VM is like renting an empty warehouse: total freedom, but you run the lights and locks. Managed Instance is a serviced office where most things you are used to are provided. Azure SQL Database is a desk in a co-working space: simplest, but you adapt to the shared setup.

i
Good to know

Choosing a managed target moves you toward less operational work. But the more you rely on instance-level behaviors, the more likely Managed Instance or a virtual machine is the honest answer, not Azure SQL Database.

8Architecture and Components

What actually sits between your source and your target?

flowchart LR
  S["Source database"] --> R["Migration runtime or service node"]
  R --> T["Target database"]
  S -.->|backup files| ST["Azure Storage or network share"]
  ST -.->|restore| T
  P["Azure portal and control plane"] --> R
  R --> M["Azure Monitor"]
        
FIG 4 — Typical building blocks of a migration: data path, optional backup path and control plane
Component 1

Control plane

The Azure portal, command-line tools and interfaces where you define the migration, start it, watch it and cut it over.

Component 2

Migration runtime

The worker that connects to the source and target and moves the data. Depending on the experience, it may be a managed service instance or a self-hosted component installed on a machine that can reach your source.

Component 3

Source

Your existing database. It needs permissions, network reachability and sometimes special settings such as change capture enabled.

Component 4

Target

The Azure database that you created and prepared in advance, with enough size and the correct networking.

Component 5

Backup storage

For backup-based paths, a network share or an Azure storage account where backup files are placed and picked up for restore.

Component 6

Monitoring

Status views, per-database progress and metrics that tell you whether the migration is healthy.

Two data paths

It helps to know that migrations to SQL Server-family targets follow one of two broad data paths. In the logical path, the service reads rows and writes them to the target, table by table, and for online mode reads changes using a change-capture mechanism. In the backup and restore path, a full backup of the source is restored on the target, followed, for online mode, by a series of smaller log backups that are continuously restored until cutover. Managed Instance and virtual machine targets commonly use the backup path because it preserves the database exactly, including its internal structures.

Simple Analogy

The logical path is like a clerk who reads each ledger line from the old book and writes it into a new book. The backup path is like photocopying the entire book and then sending daily photocopies of newly added pages so the copy stays current.

9How an Offline Migration Works Inside

Simple on the surface, with several careful steps underneath.

1

Prepare the target

Create the target, size it, configure networking and, for logical migrations, deploy the schema first so tables exist before data arrives.

2

Connect and validate

The service tests connectivity and permissions to the source and target, and reports problems before moving any data.

3

Stop changes at the source

Your team quiesces the application so no new writes occur. This gives a stable, consistent state to copy.

4

Copy the data

Tables are read and loaded in parallel batches, or a backup is taken and restored. Progress is reported per table or per database.

5

Rebuild and verify

Indexes, constraints and statistics are brought to a usable state, and row counts or checks confirm that the copy matches.

6

Switch the application

Connection settings are changed to point at the target, and the application is brought back online.

Duration is a function of size, bandwidth and parallelism

A rough estimate for offline duration is data size divided by effective throughput, plus time for rebuilding indexes and validation. Effective throughput is limited by whichever is slowest: the source read speed, the network link, the migration runtime, or the target’s ability to accept writes. This is why a rehearsal that measures real throughput is far more trustworthy than a calculation on paper.

!
Common Mistake

Forgetting that the target size at migration time can be temporarily larger. Many teams scale the target up during the copy to speed it up, then scale back down afterwards. Running a heavy load into a small target creates avoidable delay and throttling.

10How an Online Migration Works Inside

The heart of minimal downtime is keeping a copy continuously up to date.

Stage one: the initial load

The service takes a consistent starting point and copies the data to the target while the source stays in use. For a backup-based path, this is a restore of a full backup. For a logical path, it is a table-by-table load.

Stage two: change synchronization

While the initial load runs, the source continues to change. The service must therefore capture those changes and apply them. In the backup path, changes arrive as transaction log backups: periodic files that record everything that happened since the last backup. Each one is picked up and restored on the target in order. In the logical path, a change-capture feature on the source records inserts, updates and deletes, and the service reads those records and replays them on the target. Both approaches keep the lag small, and you can watch it shrink as the service catches up.

Simple Analogy

After photocopying the whole ledger, you receive a stream of small slips: “page 41, line 7 changed”. A clerk applies each slip in order to the new ledger. Eventually the new ledger is only a few slips behind the old one.

Stage three: ready for cutover

When the lag is tiny and stable, the migration reaches a state where cutover can be requested. Until you trigger it, the service keeps syncing, which gives you time to test the target, run reports against it, and prepare the application in calm conditions.

flowchart TD
  A["Initial load running"] --> B["Initial load complete"]
  B --> C["Applying changes, lag shrinking"]
  C --> D["In sync, ready for cutover"]
  D --> E["Stop writes at source"]
  E --> F["Apply final changes"]
  F --> G["Complete cutover"]
  G --> H["Application uses target"]
        
FIG 5 — State progression of an online migration

Why a log chain matters

In the backup path, log backups form a chain. If one file in the middle is missing or taken out of order by another backup tool, the chain breaks and the target cannot continue. For this reason, during an online migration the source must not have another process taking competing log backups or truncating logs in a way that breaks the sequence. Coordinate with the team that runs the regular backup jobs.

!
Common Mistake

Leaving an old scheduled backup job running during an online migration. It can produce log backups the migration does not know about, leaving a gap that cannot be bridged without starting over.

Source load during synchronization

Change capture and log backups add some work for the source. On a source that is already close to its limits, this extra load can hurt users. Assess headroom before an online migration, and schedule the heaviest initial copy for quieter hours where possible.

11Networking and Connectivity

Most failed migrations fail because two machines could not talk to each other.

The migration runtime must reach both source and target. If the source is in your own data center, you need a private connection between it and Azure. The usual options are a site-to-site virtual private network, which creates an encrypted tunnel over the internet, or ExpressRoute, a dedicated private line from your network to Azure with more predictable bandwidth and latency. For large or long-running migrations, dedicated connectivity is strongly preferred.

Connectivity optionStrengthLimitationFits
Site-to-site VPNQuick to set up, encryptedBandwidth and latency vary with the internetSmall to medium databases
ExpressRoutePrivate, predictable, high bandwidthTakes longer to order and costs moreLarge databases and long online syncs
Public endpoint with firewall rulesSimplest, no private network neededExposes more to the internet, must restrict by addressShort, controlled tests
Offline shipping of dataAvoids the network entirely for bulk dataSlow turnaround, needs a separate sync for changesVery large first copies

Firewalls, ports and name resolution

Source firewalls must allow the migration runtime to connect on the database port. Target firewalls must allow the runtime as well. If you use private endpoints, name resolution must return the private address, which usually requires correct private DNS zones. A very common symptom is “the connection times out” because a firewall rule, a missing route, or a DNS entry pointing to the wrong address blocks the path. Test connectivity from the actual machine that will run the migration, not from your laptop.

Simple Analogy

Even the best moving crew cannot work if the gate to the old building is locked or the new building’s address is wrong. Networking is the gate, the road and the address book of a migration.

Bandwidth planning

Divide the data size by the realistic bandwidth you can dedicate, and then add safety. If a database is large and the link is modest, the initial copy might take days, and an online migration must then also keep up with the daily volume of change. A migration cannot catch up if the link carries less data per hour than the source produces in changes. Check both numbers before choosing a method.

i
Practical Rule

Measure change volume on the source over a normal week. If the average daily change is a large fraction of your available daily bandwidth, an online approach over that link will struggle.

12Security, Permissions and Compliance

A migration touches your most sensitive data, so protect it at every step.

Least privilege

The accounts used by the migration need enough permission to read the source and write the target, and no more. Use dedicated migration accounts, not personal administrator accounts, and remove or disable them after the project. Document exactly which permissions were granted and why, so that auditors and security teams can review them.

Encryption in transit and at rest

Connections should use encrypted transport. Backup files placed in storage should be protected with access controls, and storage accounts used for migration should restrict access to the specific runtime or identity. Azure targets encrypt data at rest by default, and organizations with stricter requirements can use their own encryption keys. Check that the migration does not copy sensitive data into places with weaker protection, such as a shared folder that many people can read.

Control

Dedicated accounts

Separate, temporary identities for the migration with clear ownership and an end date.

Control

Private networking

Private endpoints and private connectivity so data never crosses the open internet.

Control

Temporary storage hygiene

Delete backup files and staging areas after cutover and restrict access while they exist.

Control

Auditing

Enable logging on source, target and storage so every access during the project can be reviewed.

Control

Data residency

Choose target regions that satisfy legal rules about where data may live.

!
Common Mistake

Leaving migration credentials, backup files and open firewall rules in place after the project. Cleanup is part of the migration, not an optional extra. Add it to the cutover checklist with an owner and a date.

Sensitive data and test copies

Rehearsals use real-shaped data, which may contain personal information. If a rehearsal uses a copy of production data, treat the rehearsal environment with production-level protection, or mask the sensitive columns before the copy. This is a frequent compliance gap in otherwise careful projects.

13Planning: Sizing, Windows and Cutover Strategy

A plan turns hope into a schedule.

1

Define business requirements

Agree on the maximum acceptable downtime, acceptable data loss, and the preferred dates. These numbers drive the choice between offline and online.

2

Group databases into waves

Move related databases together and start with low-risk ones. Early waves teach the team and improve the plan for the critical ones.

3

Map dependencies

Identify applications, reports, integration jobs and linked systems that depend on each database. Moving one database can break a hidden consumer.

4

Prepare the target environment

Landing zone, networking, security, monitoring and naming conventions should exist before the first data arrives.

5

Write the cutover runbook

A minute-by-minute checklist with owners, commands, checks and a clear decision point for go or rollback.

6

Rehearse and adjust

Practice with real volumes, record actual timings, and fix the plan using the results.

Simple Analogy

Waves are like moving a school one classroom block at a time. You learn from the first block, so by the time you reach the laboratory with fragile equipment, the team has already practiced the routine.

The cutover runbook

A good runbook lists who announces the start, who stops application writes, who confirms the migration lag is zero, who triggers the cutover, who updates connection settings, who runs smoke tests, and who decides about rollback. It lists exact times, expected durations and the evidence required at each step. When pressure is high, nobody should have to invent a decision.

i
Practical Rule

Set a hard rollback deadline. For example, “if validation is not complete by 3:00 a.m., we return to the source”. Without a pre-agreed deadline, teams drift past the point where rollback is still easy.

14Running the Migration Step by Step

The control-plane flow looks similar across most experiences.

1

Create or select the target

Provision the target database service with the chosen size and network settings, and confirm you can connect to it.

2

Register the migration resource and runtime

Create the migration resource in Azure and, if the experience needs one, install and register the helper runtime on a machine that can reach the source.

3

Provide source connection details

Enter the source server, authentication details and the databases to migrate. The service checks connectivity and permissions.

4

Choose the target and mode

Select the target server, pick offline or online if both are offered, and map source databases to target databases.

5

Configure the backup location when required

For backup-based paths, point the service to the network share or storage account that holds backups, with the right permissions.

6

Review and start

The portal summarizes settings and runs final checks. Starting the migration begins the initial load.

7

Monitor progress

Watch status, lag, errors and throughput. Investigate warnings early rather than at cutover time.

8

Trigger cutover when ready

After the planned stop of writes and the final sync, complete the migration and move the application over.

!
Common Mistake

Following a step sequence from an old blog post. The experience screens change over time. Always follow the current official walkthrough for your source and target, and use this guide to understand why each step exists.

15Cutover and Validation

The moment of truth, and the checks that prove the move worked.

The cutover sequence

The sequence is predictable. Announce the maintenance window. Stop the application or put it into read-only mode. Confirm that no active writes remain at the source. Let the service apply any final changes so that the lag reaches zero. Complete the cutover in the service. Update the application connection settings or the name resolution. Start the application. Run smoke tests. Declare success or roll back based on the agreed criteria.

flowchart LR
  A["Announce window"] --> B["Stop writes"]
  B --> C["Final sync, lag zero"]
  C --> D["Complete cutover"]
  D --> E["Switch connections"]
  E --> F["Smoke tests"]
  F --> G{"Pass?"}
  G -->|Yes| H["Go live"]
  G -->|No| I["Rollback to source"]
        
FIG 6 — Cutover with an explicit rollback branch

What to validate

Check 1

Row counts and checksums

Compare counts per table, and for critical tables compare aggregates or checksums between source and target.

Check 2

Schema completeness

Verify that all tables, views, indexes, constraints, procedures and permissions exist and match expectations.

Check 3

Application behavior

Run functional tests of the main business flows against the target, including reports and batch jobs.

Check 4

Performance

Compare response times of key queries and transactions against the baseline captured before migration.

Check 5

Integrations

Confirm that connected systems, scheduled jobs and downstream consumers work with the new database.

Simple Analogy

After the move, you do not just trust that all boxes arrived. You count the boxes, open the fragile ones, switch on the appliances and try the front door key. Validation is that walk-through before you cancel the old lease.

Keep the source safe for a while

After cutover, do not delete the source immediately. Keep it intact, and ideally read-only, for an agreed period. If a serious problem appears in the first days, the source is your fallback. If you made writes on the target after cutover, a rollback requires a plan to carry those writes back, so decide that plan in advance, even if you hope never to use it.

“A migration is not finished when the data arrives; it is finished when the business confirms that nothing was lost.”

16What a Database Migration Does Not Move

The data is only part of what an application depends on.

A database does not live alone. Around it sit server-level objects that belong to the instance rather than to the database. Depending on the path and the target, many of these are not carried automatically, and you need to plan how to recreate them.

Item

Logins and users

Server-level logins live outside the database. Database users may become orphaned if the matching logins are missing, so identities must be recreated and mapped.

Item

Scheduled jobs

Jobs run by the agent on the source, such as nightly maintenance and data loads, may need to be rebuilt using the scheduling tools of the target.

Item

Linked servers and external links

Connections from the database to other systems must be recreated and their network paths verified.

Item

Alerts, operators and mail settings

Notification configuration at the server level needs recreating, or replacing with Azure monitoring features.

Item

Integration and reporting packages

Packages that load or report on the data live elsewhere and must be repointed or redeployed.

Item

Certificates, credentials and keys

Secrets used by the database for encryption or external access have to be moved securely or reissued.

ANTI-PATTERN-02 Avoid
Problem

The project plan lists only database names and sizes, with no inventory of logins, jobs, linked servers or external consumers.

Why It’s Harmful

After cutover, nightly jobs silently stop, users cannot sign in, and reports fail. The data is perfectly migrated but the business is not working.

Correct Approach

Build an inventory of every server-level and surrounding object during assessment, assign an owner to each, and test them during rehearsal.

17Performance Tuning During and After Migration

Speed matters twice: how fast the data moves, and how fast the new system runs.

Speeding up the migration itself

1

Scale up the target temporarily

Give the target extra compute and input and output capacity during the load, then scale down after cutover. Many managed targets allow scaling with little disruption.

2

Improve the network path

Use a dedicated connection, place the runtime close to the source, and avoid sharing the link with other heavy traffic.

3

Reduce the source work

Schedule the initial copy for quiet hours and pause heavy batch jobs and maintenance that compete for source resources.

4

Handle very large tables thoughtfully

Huge tables dominate the timeline. Consider archiving old data before the move, or moving it separately, so the main migration copies less.

5

Split into parallel migrations

Several databases can migrate at the same time, within limits of the runtime, the network and the target.

Performance after the move

Even a perfect copy can run differently on the new platform. Statistics may be stale, query plans may differ because of version changes, and the sizing may be a little off. Update statistics, rebuild fragmented indexes where needed, and compare against the pre-migration baseline. Query performance features of the target can help you detect regressions and, in some cases, automatically revert to a better plan. Plan a tuning period after cutover rather than assuming day-one perfection.

i
Good to know

Compatibility level settings control which version behaviors the database uses. Some teams keep the old level at first for safety, then raise it later after testing, which separates the platform move from the behavior change.

Simple Analogy

After moving to a new shop, the shelves are the same but the aisles are laid out differently, so staff take a few days to rediscover the fastest paths. Post-migration tuning is helping the system find its fastest paths again.

18Monitoring and Troubleshooting

When something stalls, a calm routine beats panic.

What to watch

Signal

Migration status per database

Whether each database is queued, loading, syncing, ready for cutover, completed or failed.

Signal

Lag or pending changes

How far behind the target is. It should trend downward after the initial load.

Signal

Throughput

Data moved per second. A sudden drop often indicates network or target limits.

Signal

Source and target resource use

Processor, memory and input and output on both sides, to spot who is the bottleneck.

Signal

Errors and warnings

Per-table failures, permission errors and timeouts reported by the service.

Common problems and their usual causes

SymptomLikely causeWhat to do
Cannot connect to sourceFirewall, routing, wrong name or credentialsTest from the runtime machine, check rules and name resolution
Permission deniedMigration account lacks required rightsCompare granted rights with the documented prerequisites
Initial load very slowNetwork limits or undersized targetMeasure link, scale target up temporarily, reduce competing load
Lag keeps growingChange volume exceeds throughputImprove bandwidth, scale target, move busy hours of the source load
Log chain brokenAnother job created or removed backupsStop competing backups and restart from a new full backup
Table fails to loadUnsupported data type or constraint conflictReview error details, fix schema or data, retry the table
Users cannot sign in after cutoverLogins or identities not recreatedRecreate and map identities, fix orphaned users
Application slower than beforeDifferent plans, stale statistics, smaller sizeUpdate statistics, review plans, adjust target size
i
Practical Rule

Troubleshoot from the outside in: network first, then permissions, then source health, then target capacity, then data issues. Most problems are found in the first two steps.

ANTI-PATTERN-03 Avoid
Problem

The team starts a long online migration on Friday and does not look at it again until the planned cutover.

Why It’s Harmful

A broken chain or a growing lag can sit unnoticed for days. At cutover time, there is no fresh data and no time to fix it.

Correct Approach

Set alerts on failure and lag, assign someone to review status daily, and treat a stuck migration as an incident from the first hour.

19Alternatives and Complementary Approaches

DMS is one road. Sometimes another road fits better.

Option

Native backup and restore

Take a backup, upload it, restore it. Simple and reliable for offline moves to targets that support it, with no extra service.

Option

Log replay service

A managed way to restore full and log backups into Managed Instance with control over when to complete the cutover, useful when you want direct control of the process.

Option

Managed Instance link

Uses a replication technology to keep a Managed Instance close to a live SQL Server, enabling near-real-time sync and, for some versions, controlled movement in both directions.

Option

Export and import packages

Export schema and data into a package file and import it on the target. Convenient for small databases, slower for large ones.

Option

Transactional replication

A long-standing feature that streams changes from a source to a subscriber, sometimes used to approximate an online migration to targets that support it.

Option

Data pipelines

Copy-style data integration services can move tables between systems, useful for heterogeneous moves and partial data loads, but they do not copy schema and server objects for you.

NeedGood fitWhy
Guided portal experience with progress trackingAzure Database Migration ServiceManaged orchestration and status for supported pairs
Fine control over restore timing to Managed InstanceLog replay or the instance linkYou decide the moment of cutover directly
Small database, downtime acceptableBackup and restore or package exportSimple, few moving parts
Different engineConversion tools plus data pipelines or migration serviceSchema and code must be converted first
Selective subset of tablesData pipelines or replicationAllows filtering and partial copies
!
Check Before You Plan

Which alternatives are supported for your versions and targets, and which Microsoft currently recommends, changes over time. Treat this table as a map of ideas, then confirm the details in the current documentation.

Simple Analogy

To cross a river you may take a ferry, a bridge or a small boat. The ferry, the managed service, is convenient and tracked. The small boat, the direct tools, gives you control but needs more skill. Pick the vehicle that matches the cargo and the crew.

20Cost and Licensing

A migration has its own cost, and so does the destination.

Cost shows up in three places. First, the migration itself: the tooling or service tier used while the migration runs, the runtime machine, network charges, temporary storage and extra target capacity during the load. Second, the people: assessment, testing, application changes and weekend cutovers are usually the largest cost of all. Third, the destination: the monthly cost of the target service for years afterward.

Saver

Hybrid benefit for existing licenses

Organizations that already own eligible SQL Server licenses with software assurance can often apply them to Azure targets and pay a reduced rate. Verify eligibility and terms.

Saver

Reserved capacity

Committing to a term for a predictable baseline brings a discount compared with pay-as-you-go pricing.

Saver

Right-sizing after cutover

Use real usage on the new platform to reduce an oversized target after the first weeks.

Saver

Archive before moving

Data nobody reads does not need premium storage. Archiving it first shortens the migration and lowers the permanent bill.

i
Good to know

Pricing tiers and any free allowance for the migration tooling can change. Confirm current prices and any programs that fund or assist migrations on the official pricing pages and with your Microsoft contact before you build a budget.

Simple Analogy

The moving truck is a one-time expense, but the rent of the new shop continues every month. A cheap move into an oversized shop is no bargain. Spend effort on choosing the right size of destination, not only on the move.

21Patterns and Anti-Patterns

What experienced teams do, and what they learned not to do.

Patterns worth adopting

Pilot wave first

Start with a small, low-risk database to prove the connectivity, permissions, runbook and monitoring before touching critical systems.

Parallel run and compare

Keep the target synchronized and run read-only tests or reports on it before cutover, comparing results with the source.

Connection abstraction

Use configuration or a name alias for database connections so that switching targets is a controlled change in one place.

Freeze window for schema changes

Pause schema changes on the source during the migration so the schema stays aligned between source and target.

Automated validation scripts

Automate row counts, checksums and smoke tests so validation is fast, repeatable and identical in rehearsal and production.

Defined rollback path

Decide in advance how to return to the source and how to treat writes made on the target in the meantime.

Anti-patterns to avoid

ANTI-PATTERN-04 Avoid
Problem

The first time the team runs the full migration is the production cutover night.

Why It’s Harmful

Unknown durations, missing permissions and unexpected errors appear at the worst possible time, with the business waiting.

Correct Approach

Rehearse completely on realistic data, record timings, and fix the plan before the real window.

ANTI-PATTERN-05 Avoid
Problem

Schema changes continue on the source while an online migration is running.

Why It’s Harmful

The target schema diverges, change application fails for the new columns or tables, and the migration stops.

Correct Approach

Freeze schema changes during the migration, or coordinate each change deliberately on both sides.

ANTI-PATTERN-06 Avoid
Problem

The source is decommissioned immediately after cutover to save cost.

Why It’s Harmful

If a hidden defect appears, there is nothing to fall back on, and lost or changed data cannot be compared against the original.

Correct Approach

Keep the source intact, preferably read-only, for an agreed stabilization period, then retire it with approval.

22Best Practices Checklist

A last review before any production move.

Do

  • Assess compatibility and size from real usage over a full business cycle
  • Confirm the current supported path for your exact source and target
  • Inventory logins, jobs, links and external consumers
  • Use private, reliable connectivity for large or long migrations
  • Rehearse end to end and capture real timings
  • Write a cutover runbook with owners and a rollback deadline
  • Monitor daily and alert on failure and lag
  • Validate data, behavior and performance before declaring success
  • Clean up credentials, storage and firewall rules afterward

Avoid

  • Changing the database engine and platform in a single leap without need
  • Sizing from the old hardware list instead of measured demand
  • Assuming online migration means no downtime at all
  • Running competing backup jobs during a log-based online migration
  • Making schema changes on the source mid-migration
  • Testing connectivity only from a personal laptop
  • Deleting the source on the day of cutover
  • Leaving temporary access and files in place
i
Practical Rule

Write the lessons learned after every wave and feed them into the next. By the final, most critical wave, the team should feel that cutover is routine.

23Real-World Scenarios

Realistic situations show how the ideas combine.

Retail company closing a data center

A retailer with dozens of SQL Server databases must leave a data center by a fixed date. It groups databases into waves, uses assessment to pick Managed Instance for those with agent jobs and cross-database queries, uses online migration for the order system with a ten-minute downtime budget, and offline migration for small reporting databases moved on weekends.

Bank with strict downtime and audit rules

A financial institution requires private connectivity only, dedicated migration identities with approval trails, and full validation evidence before each cutover. It uses a dedicated line for the long synchronization and keeps the source read-only for thirty days afterward.

Software vendor modernizing to a managed database

A vendor with many customer databases moves them to Azure SQL Database one customer at a time. A scripted, repeatable validation suite and an automated runbook let the team migrate several small customers per night, with a larger customer handled using online mode.

Open-source database move

A startup running PostgreSQL on its own servers moves to a managed Azure service using the migration capability of the target, validating extensions and versions first, and cutting over during a low-traffic hour with a short pause in writes.

Oracle to open-source modernization

An enterprise converts schema and procedural code with conversion tools, tests the converted code extensively, loads data in rehearsals, and runs both systems in parallel before a final cutover months after the first rehearsal.

Healthcare provider with regional residency rules

A provider picks Azure regions that satisfy residency laws, masks sensitive columns in rehearsal copies, and documents every access to patient data during the project for auditors.

“Great migrations are won in assessment and rehearsal, not on cutover night.”

24Frequently Asked Questions

Short answers to common beginner questions.

Q1Is Azure Database Migration Service a database?

No. It is a migration tool and orchestration service. It moves data from a source database to a target database, and it is not meant to be where your data lives afterwards.

Q2What is the difference between offline and online migration?

Offline stops changes at the source during the copy, so downtime lasts for the whole migration. Online copies the data while the source keeps working and then keeps applying changes, so downtime is limited to a short cutover window.

Q3Can I migrate with zero downtime?

Not truly. Online migration reduces downtime to minutes, but writes must pause briefly during cutover, and the application must be redirected to the target.

Q4Does the service convert my schema from one engine to another?

Engine conversion is handled by separate assessment and conversion tools. The migration service focuses on moving data and, for same-family paths, databases as a whole. Always check what your specific path includes.

Q5What tool should I use before migrating?

Use assessment tools to find compatibility issues and recommend a target size, such as Azure Migrate and the Data Migration Assistant for SQL Server sources. For other engines, use the conversion tool suited to that engine.

Q6Which Azure SQL target should I choose?

Choose Azure SQL Database for a single, modern application database, Managed Instance when you need broad instance-level compatibility with minimal change, and SQL Server on a virtual machine when you need operating system access or features the managed options do not support.

Q7How long will my migration take?

It depends on data size, network bandwidth, source and target performance, and the method. The reliable way to know is a rehearsal that measures real throughput on realistic data.

Q8Are logins and scheduled jobs migrated automatically?

Often not. These live at the server level and usually need separate handling. Inventory them during assessment and test them during rehearsal.

Q9What if the migration fails halfway?

The source is untouched by the copy, so it remains your safe fallback. Investigate the error, fix the cause, and retry or restart the affected database. Keep the source available until the target is fully validated.

Q10Do I need a private network connection?

For anything beyond small tests, yes, it is strongly recommended. A VPN works for modest sizes and a dedicated private line is better for large or long-running migrations.

Q11Is the service still the right choice, given that tooling keeps changing?

It depends on your source, target and version. Microsoft has introduced newer experiences and retired some older ones, and some targets now include their own migration features. Check the current official guidance for your exact pair before committing, and use the concepts in this guide to judge any option.

Q12When can I delete the old database?

Only after validation passes, the business signs off, and a stabilization period has ended. Keep it read-only during that period, and delete it with formal approval and secure disposal of any backup files.

Q13What is the biggest cause of migration problems?

Skipping assessment and rehearsal. Hidden dependencies, unsupported features and connectivity issues are cheap to find early and very expensive to find during cutover.

25Summary and Key Takeaways

Azure Database Migration Service exists to take the anxiety out of moving databases to Azure. It helps you copy data safely, track progress, and, where the scenario supports it, keep the target in step with a live source so that downtime shrinks to a short cutover window. But the tool is only one part of a journey that begins with assessment, includes conversion and fixes, and ends with validation, tuning and a careful retirement of the source. The teams that succeed treat migration as a project with stages, owners, rehearsals and a rollback plan. They also stay honest about the moving parts of Microsoft’s tooling and check current documentation before they commit. Master the ideas in this guide, and you can handle any specific experience the portal shows you, today or in the future.

Key Takeaways

  • Assess before you move — measure compatibility and real usage over a full business cycle, and choose the target type deliberately.
  • Offline is simple, online is short — offline accepts downtime for simplicity, online adds complexity to shrink downtime to a brief cutover, but never to zero.
  • Know the data path — logical copy with change capture and backup with log restore behave differently and have different prerequisites and failure modes.
  • Networking decides success — plan private connectivity, firewalls, name resolution and bandwidth against both data size and daily change volume.
  • Migrate more than data — logins, jobs, links, packages and secrets need an owner and a test, or the business will stop even though the data arrived.
  • Rehearse, run a runbook, keep a rollback — practice on realistic data, script the cutover with owners and a deadline, and keep the source intact until validation and sign-off.
  • Verify the current tooling — experiences, tiers and supported paths change, so confirm them in official documentation before planning.