What Actually Happens When You Use DMS

Azure Database Migration Service Architecture

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:

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.

Database Migration Workflow

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:

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.

Current DMS vs Classic DMS: What Actually Works

Feature

DMS (Current)

DMS (Classic)

Reality Check

Assessment

✅ Works

❌ No

Assessment lies 30% of the time about compatibility

SKU Recommendations

✅ Works

❌ No

Recommendations are usually oversized, expect cost overruns

Azure SQL Database (Offline)

✅ Works

✅ Sometimes

Classic randomly fails on databases >100GB

Managed Instance (Online)

✅ Usually works

✅ Fails often

Network timeouts kill online migrations regularly

Managed Instance (Offline)

✅ Works

✅ Works

Most reliable migration path when you can afford downtime

SQL VM (Online)

✅ New feature

❌ No

Still buggy, prepare for multiple attempts

SQL VM (Offline)

✅ Works

✅ Works

Straightforward, just slow as hell

Login Migration

✅ Works

✅ Works

Passwords don't migrate, prepare for password resets

Schema Migration

✅ Actually good

⚠️ Buggy

Classic breaks stored procedures with dependencies

Azure Data Studio

✅ Decent UI

❌ No

Actually usable interface vs portal hell

PowerShell Automation

✅ Works

✅ Works

Script everything or suffer through portal clicking

Private Endpoints

✅ Works

❌ No

Essential for compliance, classic forces public endpoints

TDE Support

✅ Works

❌ Breaks

Classic requires manual cert management nightmare

Error Messages

⚠️ Cryptic

❌ Useless

Current version errors are slightly less horrible

Retirement Date

Active

March 15, 2026

Use current version or get abandoned by Microsoft

How to Actually Use DMS Without Losing Your Mind

Azure Database Migration Service Discovery

DMS migrations follow a simple pattern: assess what will break, try to migrate it, fix what actually breaks, repeat until it works. Microsoft calls this "best practices" but it's really just trial and error with better logging.

Step 1: Run Assessment and Pray

Start with Azure Migrate to scan your databases. The assessment will tell you everything looks good, then half your stored procedures will break during migration. But run it anyway because it catches the obvious stuff like:

The SKU recommendations are always oversized. If it recommends 8 vCores, you probably need 4. If it recommends 4, you probably need 2. Microsoft wants your money. Use the Azure SQL sizing guide and performance recommendations to right-size your target.

Step 2: Pick Your Migration Pain Level

Offline migrations are the safe choice:

  • Database goes down, data copies over, database comes back up
  • Takes 2-8 hours depending on size and network speed
  • Simple to troubleshoot when it breaks
  • Use this for anything under 100GB or where downtime is acceptable

Online migrations keep your database running but add complexity:

  • Initial full backup/restore, then continuous log shipping
  • Works great until network hiccups kill the sync
  • Final cutover still requires brief downtime (2-5 minutes if lucky)
  • Use this for large databases where downtime costs more than the headache

Step 3: Network and Authentication Hell

90% of DMS failures are network or auth issues. Before you start:

Install SHIR correctly:

  • Download latest version from Microsoft
  • Install on a machine that can reach both source DB and Azure
  • Test connectivity before starting migration (seriously, test everything)
  • SHIR versions are picky - 5.37+ required for new features

Fix authentication early:

  • Source needs `db_owner` permissions minimum - db_datareader won't cut it
  • Target needs proper Azure SQL roles (the error messages won't tell you which ones)
  • Service accounts need login rights, not just database access
  • Password authentication is easier than Windows auth through SHIR
  • Pro tip: Create dedicated migration accounts with explicit permissions - using sa or admin accounts causes weird permission failures later

SQL Server to Azure Migration Diagram

Step 4: When It Breaks (Not If)

Common failure modes and fixes:

Nuclear options when everything fails:

PowerShell Automation (For When You Hate Yourself)

PowerShell cmdlets work well for bulk migrations. Script everything because clicking through the portal 50 times will drive you insane.

## Basic migration workflow
$migration = New-AzDataMigrationToSqlManagedInstance -Parameters $params
Start-AzDataMigrationToSqlManagedInstance -ResourceGroupName $rg -ManagedInstanceName $mi
## Then wait and pray it doesn't fail

The cmdlets have decent error handling, but expect to spend a day figuring out the parameter syntax. Microsoft's documentation examples never work as written.

Questions People Actually Ask (And Honest Answers)

Q

Why does the assessment say my database is compatible but the migration fails?

A

Because the assessment is optimistic and doesn't catch everything. It misses:

  • Custom assemblies (Azure SQL Database doesn't support .NET assemblies at all)
  • Linked server dependencies (you'll find these when apps break)
  • xp_cmdshell usage in stored procedures (Azure SQL rejects these)
  • Database file paths in scripts (Azure abstracts storage away)

Run the assessment, then manually review your stored procedures and SQL Agent jobs. If it uses anything that touches the file system or calls external systems, it'll probably break.

Q

Should I use online or offline migration?

A

Use offline if:

  • Database is under 100GB (migration finishes in reasonable time)
  • You can afford 2-8 hours of downtime
  • You don't want to troubleshoot sync failures at 3am

Use online if:

  • Database is over 500GB (offline takes forever)
  • Downtime costs more than your sanity
  • You enjoy troubleshooting network timeouts and log shipping issues

Azure SQL Database Purchasing Models

Q

What's the real difference between Azure SQL Database, Managed Instance, and SQL VMs?

A
  • Azure SQL Database: Cheapest, most restrictions, good for new apps
  • SQL Managed Instance: More expensive, fewer restrictions, good for legacy apps
  • SQL VMs: Most expensive, no restrictions, good for when nothing else works

If your app uses cross-database queries, linked servers, or SQL Agent jobs, go with Managed Instance or SQL VMs.

Q

My migration failed with "connection timeout" - what now?

A

Network issues kill 90% of migrations. Try this order:

  1. Restart the SHIR service (fixes authentication timeouts)
  2. Check firewall rules on both source server and Azure
  3. Increase timeout values in Azure portal (default 30 seconds is too short)
  4. Test network connectivity: telnet [azure-server] 1433
  5. If all else fails, delete the migration service and start over
Q

DMS says my SHIR version is incompatible. Which version actually works?

A

Use SHIR 5.37.8767.4 or newer.

Older versions break schema migration. Download here and uninstall the old version first. Don't try to upgrade in place

  • it doesn't work reliably.
Q

The migration completed but my app is broken. Now what?

A

Check these common issues:

  • Connection strings: Azure SQL uses different server names and ports
  • SQL logins: Passwords don't migrate, you need to reset them all
  • SQL Agent jobs: Migrated jobs are disabled by default, enable them manually
  • Linked servers: Not migrated at all, apps will throw connection errors
  • Cross-database queries: Only work on Managed Instance, not Azure SQL Database
  • Case sensitivity: Azure SQL Database is case-sensitive by default - if your on-premises DB was case-insensitive, queries will start failing on column names
Q

Why is my 100GB database taking 12 hours to migrate?

A

Because DMS is slow as hell and Microsoft's time estimates are lies. Real migration times:

  • 10GB database: 30 minutes - 2 hours
  • 100GB database: 4-12 hours
  • 500GB database: 12-48 hours
  • 1TB+ database: Plan for 2-3 days

Network speed, indexing, and transaction log activity all affect migration time. Microsoft's estimates assume perfect conditions that don't exist in the real world.

Azure SQL Database Pricing Tiers

Q

DMS is "free" but my Azure bill is $500. WTF?

A

DMS service is free, but you pay for:

  • Data transfer costs: $0.02-0.09 per GB depending on region
  • Target Azure SQL compute: Your migrated database needs to run somewhere
  • Storage: Azure SQL databases charge for storage, backups, and logs
  • Failed migration retries: Each attempt burns more compute time

Large database migrations can rack up hundreds of dollars in data transfer and compute charges.

Q

How long do I have before Microsoft kills the classic DMS?

A

Classic DMS dies March 15, 2026. Microsoft will delete your classic services after that date. Migrate to current DMS before then or lose your migration history and configurations.

Q

Should I use the portal or PowerShell?

A

Portal for: Single database migrations, testing, when you hate yourself

PowerShell for: Multiple databases, automation, when you want to stay sane

The PowerShell cmdlets actually work well, but expect to spend a day figuring out the syntax because Microsoft's examples are wrong.

Q

Can I migrate back to on-premises if Azure sucks?

A

Technically yes with backup/restore, but it's painful. Azure SQL Database backups are .bacpac files that restore slowly. Plan your migration like it's permanent because reversing it is a nightmare.

Actually Useful Resources (Not Just Microsoft Marketing)

Related Tools & Recommendations

tool
Similar content

H&R Block Azure Migration: Enterprise Tax Platform on Azure

They spent three years moving 30 years of tax data to the cloud and somehow didn't break tax season

H&R Block Tax Software
/tool/h-r-block/enterprise-technology
100%
tool
Similar content

AWS MGN: Server Migration to AWS - What to Expect & Costs

MGN replicates your physical or virtual servers to AWS. It works, but expect some networking headaches and licensing surprises along the way.

AWS Application Migration Service
/tool/aws-application-migration-service/overview
83%
tool
Similar content

Oracle Zero Downtime Migration (ZDM): Free Database Migration Tool Overview

Explore Oracle Zero Downtime Migration (ZDM), Oracle's free tool for migrating databases to the cloud. Understand its methods, benefits, and potential challenge

Oracle Zero Downtime Migration
/tool/oracle-zdm/overview
73%
howto
Similar content

Zero Downtime Database Migration Strategies: AWS DMS Guide

How to Migrate Your Production Database Without Getting Fired (Or Losing Your Mind)

Blue-Green Deployment
/howto/database-migration-zero-downtime/zero-downtime-migration-strategies
68%
tool
Similar content

AWS MGN Enterprise Production Deployment: Security, Scale & Automation Guide

Rolling out MGN at enterprise scale requires proper security hardening, governance frameworks, and automation strategies. Here's what actually works in producti

AWS Application Migration Service
/tool/aws-application-migration-service/enterprise-production-deployment
65%
tool
Similar content

Migrate VMs to Google Cloud with Migrate to Virtual Machines Overview

Google finally fixed their VM migration service name - now it's "Migrate to Virtual Machines"

Migrate for Compute Engine
/tool/migrate-for-compute-engine/overview
63%
tool
Similar content

Google Cloud Migration Center: Simplify Your Cloud Migration

Google Cloud Migration Center tries to prevent the usual migration disasters - like discovering your "simple" 3-tier app actually depends on 47 different servic

Google Cloud Migration Center
/tool/google-cloud-migration-center/overview
63%
tool
Similar content

AWS X-Ray: Distributed Tracing & 2027 Migration Strategy Guide

Explore AWS X-Ray for distributed tracing, identify slow microservices, and learn implementation tips. Prepare your 2027 migration strategy before the X-Ray sun

AWS X-Ray
/tool/aws-x-ray/overview
58%
tool
Recommended

AWS Database Migration Service - When You Need to Move Your Database Without Getting Fired

competes with AWS Database Migration Service

AWS Database Migration Service
/tool/aws-database-migration-service/overview
58%
howto
Similar content

AWS to GCP Production Migration Guide: Real-World Strategies & Lessons

Skip the bullshit migration guides and learn from someone who's been through the hell

Google Cloud Migration Center
/howto/migrate-aws-to-gcp-production/complete-production-migration-guide
53%
tool
Recommended

Oracle GoldenGate - Database Replication That Actually Works

Database replication for enterprises who can afford Oracle's pricing

Oracle GoldenGate
/tool/oracle-goldengate/overview
53%
news
Similar content

Meta Spends $10B on Google Cloud: AI Infrastructure Crisis

Facebook's parent company admits defeat in the AI arms race and goes crawling to Google - August 24, 2025

General Technology News
/news/2025-08-24/meta-google-cloud-deal
50%
tool
Recommended

Striim - Enterprise CDC That Actually Doesn't Suck

Real-time Change Data Capture for engineers who've been burned by flaky ETL pipelines before

Striim
/tool/striim/overview
50%
howto
Popular choice

Migrate JavaScript to TypeScript Without Losing Your Mind

A battle-tested guide for teams migrating production JavaScript codebases to TypeScript

JavaScript
/howto/migrate-javascript-project-typescript/complete-migration-guide
48%
tool
Recommended

Fivetran: Expensive Data Plumbing That Actually Works

Data integration for teams who'd rather pay than debug pipelines at 3am

Fivetran
/tool/fivetran/overview
47%
alternatives
Similar content

AWS Lambda Alternatives & Migration Guide: When Serverless Fails

Migration advice from someone who's cleaned up 12 Lambda disasters

AWS Lambda
/alternatives/aws-lambda/enterprise-migration-framework
45%
tool
Popular choice

jQuery Migration Troubleshooting - When Upgrades Go to Hell

Solve common jQuery migration errors like '$ is not defined' and plugin conflicts. This guide provides a debugging playbook for smooth jQuery upgrades and fixes

jQuery
/tool/jquery/migration-troubleshooting
45%
tool
Popular choice

jQuery - The Library That Won't Die

Explore jQuery's enduring legacy, its impact on web development, and the key changes in jQuery 4.0. Understand its relevance for new projects in 2025.

jQuery
/tool/jquery/overview
43%
tool
Popular choice

GitHub Copilot - AI Pair Programming That Actually Works

Stop copy-pasting from ChatGPT like a caveman - this thing lives inside your editor

GitHub Copilot
/tool/github-copilot/overview
41%
tool
Popular choice

OpenAI Browser Implementation Challenges

Every developer question about actually using this thing in production

OpenAI Browser
/tool/openai-browser/implementation-challenges
39%

Recommendations combine user behavior, content similarity, research intelligence, and SEO optimization