DMS moves SQL Server databases to Azure. It has two versions because Microsoft couldn't get it right the first time. The classic version gets killed March 15, 2026 because it randomly failed on large databases and the error messages were useless.
The current version works with Azure Data Studio's migration extension, which is actually decent tooling. The assessment feature tells you if your database will migrate cleanly or if you're fucked. Spoiler: you're usually fucked by something stupid like deprecated features, compatibility level issues, or that one stored procedure from 2012 that nobody remembers writing but everything depends on. Microsoft's migration best practices guide mentions none of the real problems you'll encounter.
How DMS Actually Works (When It Works)
DMS uses a Self-Hosted Integration Runtime (SHIR) that you install on a machine that can talk to both your source database and Azure. Version compatibility is a nightmare - I've seen migrations fail because someone installed SHIR 5.35 instead of 5.37+. Always grab the latest version or prepare for cryptic error messages.
Online migrations keep your database running while DMS copies data in the background. This works great until:
- Network timeouts kill the connection (happens more than Microsoft admits)
- Transaction log fills up because replication can't keep up
- Authentication tokens expire mid-migration
- Azure decides to "maintenance" your target during the sync
Offline migrations are simpler - database goes down, data copies over, database comes back up. Takes longer but fewer things can break randomly. The offline migration process is documented well, but real-world timelines are 2-5x longer than Microsoft's estimates.
What DMS Actually Migrates (And What It Breaks)
DMS can move schemas, data, logins, and SQL Agent jobs. The schema migration feature actually works well now - it copies tables, indexes, stored procedures, and most other objects without destroying them.
But here's what will bite you:
- Linked servers - DMS doesn't migrate these, your apps will break
- SQL Mail/Database Mail - Not supported in Azure SQL Database, only works on Managed Instance
- Full-text catalogs - Sometimes work, sometimes don't, no one knows why
- Custom .NET assemblies - Azure SQL Database doesn't support these at all
- Cross-database queries - Works on Managed Instance, breaks everywhere else
The schema migration rollout was supposed to fix most compatibility issues, but I still see stored procedures breaking because of slight T-SQL differences between on-premises and Azure SQL. Check the feature comparison matrix before you start - it'll save you hours of debugging later.