Database Migration with Azure DMS

Watch the video to deepen your understanding.
SubscribeComplete the full lesson to earn 25 points — 50 with Pro
Work through each section, then tap “Mark as Complete” on the last one.
✦ Skip the page breaks, the wait, and see fewer ads — read each lesson on a single page with Pro
Lesson: Database Migration with Azure Database Migration Service (DMS)
Introduction: Why Azure DMS?
Migrating databases from on-premises environments or other clouds to Azure is a critical task for any cloud migration strategy. Doing this manually—exporting large SQL dumps, managing network throughput, and ensuring data consistency—is error-prone and time-consuming.
Azure Database Migration Service (DMS) is a fully managed service designed to enable seamless migrations from multiple source databases to Azure data platforms with minimal downtime. By automating the migration process, DMS reduces the risk of data loss, minimizes application downtime, and provides a structured path for moving to Azure SQL Database, Azure Database for MySQL, or Azure Database for PostgreSQL.
Understanding the Architecture
Azure DMS operates by establishing a connection between your source database and your target Azure database. It performs two types of migrations:
- Offline Migration: The source database is taken offline, data is migrated, and the application is pointed to the new Azure database. This is best for non-critical workloads where downtime is acceptable.
- Online Migration: DMS performs an initial data load and then continuously synchronizes data changes (using transaction logs) until you manually cut over. This allows for near-zero downtime.
Key Components
- DMS Instance: The compute resource that orchestrates the data movement.
- Data Migration Assistant (DMA): A desktop tool used to assess the source database for compatibility issues before starting the migration.
- Integration Runtime (Self-hosted): Required if your source database is behind a firewall, ensuring secure data transit.
Practical Example: Migrating SQL Server to Azure SQL
Let’s walk through the standard workflow for migrating an on-premises SQL Server instance to an Azure SQL Database.
Step 1: Assessment with DMA
Before migrating, you must ensure your schema is compatible.
- Download and install the Data Migration Assistant (DMA).
- Select Assessment and point it to your source SQL Server instance.
- Review the report for "Breaking Changes" (e.g., deprecated features or cross-database queries).
Step 2: Provisioning the DMS Instance
You can provision DMS via the Azure Portal or Azure CLI.
Example: Provisioning via Azure CLI
# Create a Resource Group
az group create --name MigrationRG --location eastus
# Create the DMS Service
az dms create --resource-group MigrationRG \
--name MyMigrationService \
--location eastus \
--sku Basic_1vCore
Step 3: Configuring the Migration Project
Once the service is active, you create a project specifying the source and target.
- Source: SQL Server
- Target: Azure SQL Database
- Migration Type: Online Data Migration
Step 4: Monitoring the Migration
During an online migration, you will see a status dashboard. Once the "Full Load" is complete, the status will change to "Ready for Cutover."
Code Snippet: Monitoring via PowerShell
# Get the status of a specific migration project
Get-AzDataMigrationProject -ResourceGroupName "MigrationRG" `
-ServiceName "MyMigrationService" `
-Name "SQLToAzureMigration"
Best Practices for Successful Migrations
- Perform a Pilot Migration: Never move production data without a successful dry run. Use a restored backup of your production database in a staging environment to test the DMS workflow.
- Network Throughput: If migrating large volumes of data, ensure your ExpressRoute or Site-to-Site VPN has sufficient bandwidth to handle the initial sync without impacting production traffic.
- Clean Up Beforehand: Use the migration as an opportunity to purge old, unused data, logs, and temporary tables. This reduces the size of the dataset and speeds up the migration.
- Security First: Always use encrypted connections (SSL/TLS) during the migration. Ensure the service principal used by DMS has the minimum required permissions (e.g.,
db_owneron the source). - Test Application Connectivity: After the schema is migrated but before the data cutover, update your application connection strings to point to the new Azure environment to verify connectivity.
Common Pitfalls to Avoid
- Ignoring Compatibility Reports: Many administrators skip the DMA assessment. This leads to migration failures midway through because of unsupported features (like CLR assemblies or SQL Agent jobs).
- Under-sizing the DMS SKU: If you have a terabyte-scale database, using the "Basic" tier will result in sluggish migration speeds. Use "Premium" tiers for high-throughput requirements.
- Firewall Misconfiguration: The most common cause of "Connection Timeout" errors is failing to whitelist the DMS instance IP address on the source network firewall.
- Forgetting Agent Jobs: DMS migrates data and schema, but it does not migrate SQL Agent Jobs, SSIS packages, or Server-level logins. You must migrate these manually or via scripts.
Key Takeaways
- Assessment is Mandatory: Use the Data Migration Assistant (DMA) to identify blockers before you ever touch the Azure portal.
- Choose Your Strategy: Use Offline migrations for simple, low-downtime tolerance projects; use Online migrations for mission-critical production systems.
- Automation is Key: Utilize Azure CLI or PowerShell for repeatable migration tasks, especially if you have hundreds of databases to move.
- Post-Migration Tasks: Remember that DMS handles the data. You are still responsible for re-creating logins, jobs, and configuring Azure-specific features like Auto-scaling and Threat Protection after the migration.
- Monitor Closely: Keep a close eye on the "Data Latency" metric during online migrations to ensure your target database is keeping pace with source transactions.
Important: Always decommission the DMS instance immediately after the migration is complete to avoid incurring unnecessary costs.
Reach the last section to complete this lesson and earn points — you're on section 1 of 4.
- Introduction to Azure Monitor
- Azure Monitor Architecture and Data Sources
- Configuring Log Analytics Workspaces
- Designing Log Routing Solutions
- Configuring Diagnostic Settings
- Application Insights for Solution Architects
- Network Watcher and Network Monitoring
- Azure Monitor Alerts and Action Groups
- Workbooks and Custom Dashboards
- Designing a Comprehensive Monitoring Strategy
- Logging and Monitoring Quiz5q
- Microsoft Entra ID for Solution Architects
- Designing Identity Solutions: B2B Collaboration
- Designing Identity Solutions: B2C Scenarios
- Conditional Access Policy Design
- Designing for Multi-Factor Authentication
- Managed Identities for Azure Resources
- Service Principals and App Registrations
- Role-Based Access Control Design
- Privileged Identity Management
- Microsoft Entra ID Protection
- Zero Trust Architecture with Microsoft Entra
- Authentication and Authorization Quiz5q
- Introduction to Azure Governance
- Designing Management Group Hierarchies
- Subscription Strategy Design
- Resource Group Organization Patterns
- Azure Policy Design and Assignment
- Custom Policy Definitions and Initiatives
- Resource Locks and Tagging Strategies
- Azure Blueprints and Landing Zones
- Cost Management and Budget Design
- Cloud Adoption Framework for Governance
- Governance Solutions Quiz5q
- Introduction to Azure Storage
- Storage Account Types and Replication
- Blob Storage Tiers and Lifecycle Management
- Azure Files and Azure NetApp Files
- Azure Managed Disks Design
- Azure Data Lake Storage Gen2
- Cosmos DB Consistency Models
- Cosmos DB Partitioning and Throughput Design
- Cosmos DB API Selection Guide
- Table Storage and Queue Storage Design
- Storage Security and Encryption
- Non-Relational Storage Quiz5q
- Azure SQL Database Service Tiers
- Azure SQL Managed Instance Design
- Azure Database for MySQL and PostgreSQL
- Database Scaling: Vertical and Horizontal
- Read Replicas and Geo-Replication
- Database Security and Auditing Design
- Transparent Data Encryption and Always Encrypted
- Caching with Azure Cache for Redis
- Azure SQL Elastic Pools Design
- Relational Storage Quiz5q
- Azure Data Factory Design Patterns
- Data Integration Pipeline Architecture
- Azure Synapse Analytics Design
- Azure Databricks Integration Patterns
- Azure Stream Analytics for Real-Time Data
- Azure Event Hubs for Data Ingestion
- Data Migration Strategies and Tools
- Azure Purview for Data Governance
- Data Integration Quiz5q
- Introduction to High Availability in Azure
- Availability Zones and Availability Sets
- Azure Load Balancer Design
- Application Gateway and WAF Design
- Azure Front Door and Global Load Balancing
- Azure Traffic Manager Routing Methods
- Multi-Region Architecture Design
- SLA Design and Composite SLAs
- Health Probes and Failover Configuration
- Azure Service Fabric for Stateful HA
- High Availability Quiz5q
- Azure Backup Architecture and Vaults
- Backup Policies for VMs and Databases
- Azure Site Recovery Design
- RTO and RPO Planning Strategies
- Geo-Redundant and Cross-Region Recovery
- Hybrid and On-Premises Backup Solutions
- Resiliency Patterns and Chaos Engineering
- Disaster Recovery Testing and Drills
- Azure Immutable Backup and Soft Delete
- Backup and Disaster Recovery Quiz5q
- Introduction to Azure Compute Options
- Virtual Machine Design and Sizing
- VM Scale Sets and Autoscaling Strategies
- Azure Batch for Large-Scale Workloads
- Azure App Service Plans and Design
- App Service Environments and Isolation
- Azure Container Instances
- Azure Kubernetes Service Architecture
- AKS Networking and Storage Design
- Azure Functions and Serverless Design
- Durable Functions and Orchestration
- Compute Decision Framework
- Azure Virtual Desktop Design
- Compute Solutions Quiz5q
- Microservices Architecture Patterns
- Azure API Management Design
- Azure Service Bus Messaging Design
- Azure Event Grid and Event-Driven Architecture
- Azure Event Hubs for Streaming
- Azure Logic Apps and Integration Workflows
- Azure SignalR and Web PubSub
- Caching Strategies and Azure CDN
- App Configuration and Feature Flags
- Designing for Scalability and Performance
- Azure Container Apps Design
- Application Architecture Quiz5q
- Virtual Network Design and Address Planning
- Subnet Design and Network Segmentation
- Hub-Spoke Network Topology
- Azure Virtual WAN Design
- VPN Gateway Design and Configuration
- ExpressRoute Circuit Design
- Network Security Groups Design
- Azure Firewall and Firewall Manager
- Azure DDoS Protection Design
- Private Endpoints and Private Link
- Azure DNS and DNS Architecture
- Network Performance and Traffic Routing
- Azure Bastion and Secure Access
- Network Solutions Quiz5q
- Azure Migrate Overview and Assessment
- Migration Assessment and Discovery
- Azure Cloud Adoption Framework for Migration
- VM Migration with Azure Migrate
- Database Migration with Azure DMS
- Application Migration to App Service
- Containerizing Applications for Migration
- Migration Cost Planning and Optimization
- Data Box and Offline Migration Methods
- Migrations Quiz5q
Enjoying the courses?
Everything stays free. Pro shows fewer ads, doubles the points you earn on every lesson and quiz so you progress twice as fast, unlocks half of every practice exam — plus full case studies — with the Learn & Exam study modes, and lets you read each lesson on one page.
- ✓ Fewer advertisements
- ✓ 2× points per lesson & quiz
- ✓ 50% of every exam unlocked
- ✓ Learn & Exam modes
- ✓ Distraction-free lessons