First page of Microsoft's 100,000-partner directory, sorted by responsiveness Microsoft Solutions Partner — Security, Modern Work, Infrastructure, App Innovation Microsoft partner since 2006 1,100+ organizations under management
Home/Services/SQL Server Migration to Azure SQL Database
Migration

SQL Server Migration to Azure SQL Database

A migration of SQL Server databases to Azure SQL Database — Microsoft's most managed and usually cheapest SQL target, and the one that most often needs application changes to reach. We scope that work from the assessment before you commit to the platform, rebuild what the platform does not have (SQL Agent jobs, cross-database queries, linked servers), and migrate by the path your downtime tolerance dictates. Quoted fixed in writing from the assessment, from $3,200; the listed three weeks run from kickoff to the end of hypercare and cover a single database whose remediation the assessment has sized to fit the window. Remediation that does not fit is quoted separately and completed before the window opens; larger estates are quoted separately. If the honest answer is that Managed Instance costs you less overall, the assessment says so.

Timeline 3 weeksService owner Mike MackeyMicrosoft AzureAzure SQL DatabaseSQL Server

What this engagement is

Azure SQL Database is a single database as a service. There is no instance, no `master` you can put objects in, no SQL Agent, no cross-database queries, no linked servers, no CLR, no Service Broker, no `xp_cmdshell`, no Database Mail, and no restoring a `.bak` file. What you get in exchange is the lowest operational burden and usually the lowest price of the three targets, plus Hyperscale (currently up to 128 TB per database), serverless, and elastic pools if they suit your workload shape — and no end-of-support date, ever. For a modern, self-contained application database, it is an excellent target and the migration is straightforward. For a database that participates in three-part-name queries across four other databases, is driven by thirty SQL Agent jobs, and pulls data through a linked server to Oracle, it is a re-architecture wearing a migration's clothes. The dominant cost on this platform is almost never moving the data. It is changing the things around the data. SQL Agent jobs become Elastic Jobs, Azure Automation, or Logic Apps. Cross-database queries become an application-tier join, an elastic query, or a consolidation into one database. Linked servers become an integration service. Applications need retry logic, because transient connection faults are a normal operating condition on this platform rather than an incident. This engagement exists to do that work with the scope known in advance. Which is why the assessment is mandatory, and why it sometimes concludes that Managed Instance is cheaper once the remediation is priced. Where this sits in our catalog: we also publish an hourly SQL Server to Azure SQL Database migration for a single, self-contained database with no instance-level dependencies and a tolerable planned window. This page is for databases where the remediation is the project — Agent jobs, cross-database dependencies, an authentication model to change — and where the price has to be fixed and the cutover rehearsed; estates of several databases are quoted from the same assessment. The assessment tells you which product you need.

Which one applies to you

Unlike the Azure VM and Managed Instance services, the two delivery paths here split by downtime tolerance, not by estate size. On this platform the migration method is dictated by how much downtime you can accept, and the two methods differ substantially in constraint and effort. The assessment assigns the path; the quote states it.

Planned-downtime pathMinimal-downtime path
MethodBACPAC export/import, or Azure Database Migration Service offlineTransactional replication with Azure SQL Database as a push subscriber, or a CDC-based sync
DowntimeProportional to data volume and shape — hours, quoted from the trial runMinutes — the replication queue drains, then you switch
Primary key on every migrated tableNot requiredRequired — hard blocker
Source SQL Server Agent needed during migrationNoYes — the source acts as publisher
Compatibility remediation and SQL Agent replacementIncluded, to the effort stated in the assessmentIncluded, to the effort stated in the assessment
Best forDatabases that can take an evening or weekend window — the simpler, lower-effort pathDatabases that cannot be frozen for hours

The planned-downtime path is the right answer more often than people expect. If you can take a Saturday-night window, you avoid the primary-key constraint entirely and the quote is lower — the from $3,200 floor is this path, for a single database; the minimal-downtime path is quoted above it.

Larger estates, elastic pool consolidation, and Hyperscale migrations are scoped individually from the assessment findings.

Success criteria

Sign-off requires all seven, each with evidence attached to the closeout report.

01Downtime within the quoted window — timestamped cutover log, from write freeze to application smoke-test pass, against the window established in the trial run.
02Zero data loss — planned-downtime path: source frozen before export, per-table row counts and `HASHBYTES` aggregates reconciled against target. Minimal-downtime path: replication distribution queue confirmed drained via tracer token before cutover, then the same reconciliation.
03Schema and object completeness — `sys.objects` counts matched; every table, view, procedure, function, index, and constraint accounted for, or explicitly listed as deliberately not migrated.
04Authentication working — every application and user able to authenticate under the new contained-user or Microsoft Entra ID model; permissions reconciled against the source.
05Replaced instance-scoped functionality operating — every SQL Agent job has a working replacement running on schedule; every linked-server dependency has a working alternative; both demonstrated, not asserted.
06No performance regression — p95 duration of ten agreed business-critical queries within the tolerance agreed at kickoff (our default is 20%) of the pre-migration Query Store baseline, on the agreed service tier and purchasing model.
07Reversible within the fallback period — rollback runbook validated in the trial run; written abort criteria agreed at kickoff; source retained read-only.

What you receive

Cutover runbook — every step in order, with expected duration, owner, and the go/no-go check that gates it.
Rollback runbook — the reverse path, with abort criteria, validated in the trial run, including the limits described under Limitations.
Compatibility remediation record — every gap found, what was done about it, and what was consciously accepted.
Replaced-functionality inventory — each SQL Agent job, linked server, and cross-database dependency mapped to its replacement, with the replacement's configuration documented.
Validation evidence pack — the seven criteria above, populated with actual output.
As-built configuration document — service tier, purchasing model, size, collation, backup retention, firewall and private-endpoint configuration, authentication model.
Dependency and connection-string inventory — what connects to what, and what changed at cutover.
Hypercare from cutover to the end of the three-week window, with a named engineer — the exact dates are stated in your quote.
Project closeout report — final status, outstanding issues, final budget.

How the work unfolds

Kickoff and design (week 1)

Confirm the assessment findings still hold. Lock the service tier and purchasing model — provisioned vCore, serverless, elastic pool, or Hyperscale — and the collation. Agree the downtime window, the fallback period, the ten queries forming the performance baseline, and written abort criteria. Confirm the delivery path the assessment assigned. Confirm that any application-side changes the assessment placed ahead of the window are complete.

Compatibility remediation (weeks 1–2)

The database-side work the assessment sized to fit the window: replace cross-database references, remove or re-implement CLR, Service Broker, and `xp_cmdshell` dependencies, convert `USE` statements and three-part naming, replace `BULK INSERT` from local paths with Blob-based alternatives, and migrate the authentication model to contained users or Microsoft Entra ID. Where the application itself must change — including adding connection retry logic — we specify precisely what, and it is done by your team or vendor, or quoted separately, before the window opens; we validate it once it is in.

Instance-scoped functionality replacement (weeks 1–2)

Build the replacements for what Azure SQL Database does not have: SQL Agent jobs re-implemented as Elastic Jobs, Azure Automation runbooks, or Logic Apps; linked-server dependencies re-pointed to an integration approach; Database Mail replaced. These are built and tested before the trial run, not after cutover.

Trial run (week 2)

The full migration executed end to end against a non-production target — schema deployment, data load, remediated code deployed, replacement jobs enabled, application smoke test, reconciliation queries, and then the rollback. On the planned-downtime path this is what establishes your actual window, because export and import time is proportional to data volume and shape and cannot be estimated reliably from size alone. The go/no-go for the week-three cutover is taken on its results.

Cutover (week 3)

Planned-downtime path: revoke application logins → source database `READ_ONLY` → export → import → deploy remediated objects → enable replacement jobs → connection-string switch → smoke test → reconciliation evidence captured. Minimal-downtime path: revoke application logins → confirm distribution queue drained with a tracer token → disable replication → deploy → enable → switch → smoke test → reconcile. Go/no-go gate before the irreversible step in both cases.

Validate, hypercare, and hand over (week 3)

Query Store comparison against the baseline, including confirming the chosen service tier sustains the workload — under-provisioning is the most common cause of a technically successful migration that everybody hates. Evidence pack assembled. Source retained read-only for the fallback period. Hypercare runs from cutover to the end of the three-week window with a named engineer, then the closeout report is issued.

Prerequisites

A completed SQL Server to Azure Migration Assessment, or an equivalent findings document we can validate. This is mandatory and non-negotiable on this service. Azure SQL Database's compatibility surface is narrow enough that a fixed price quoted without assessing it would be fiction.
An active Azure subscription, with service tier, purchasing model, and size agreed.
Collation decided and signed off. It is set at database creation.
Network access decided — public endpoint with firewall rules, or private endpoint with the necessary virtual network configuration in place.
`sysadmin` on the source SQL Server instance, and owner rights on the target Azure SQL Database and its logical server — granted for the engagement and removed at closeout.
Minimal-downtime path only: a primary key on every table to be migrated. Transactional replication cannot publish a table without one. If your schema does not meet this and cannot be changed, the planned-downtime path is your route.
Minimal-downtime path only: the source SQL Server able to act as a publisher, with SQL Server Agent enabled and network connectivity to the target permitted.
A verified, restorable current backup of the source databases before work begins.
Application owners available for the trial-run smoke test and the cutover smoke test, and empowered to make or commission application changes.
Confirmation of whether the application implements connection retry logic. If it does not, that is remediation work, and it is not optional on this platform.
Authority to change DNS records or application connection strings at cutover, and a named person who can execute that change.
An agreed maintenance window and an agreed fallback period during which the source stays available.

Who does what

IT Partner

  • Select and implement the migration method against the assessment findings.
  • Perform the database-side compatibility remediation the assessment quoted and sized to fit the window.
  • Build and test replacements for SQL Agent jobs, linked-server dependencies, and other instance-scoped functionality.
  • Configure the target database, firewall or private endpoint, and authentication model.
  • Execute the trial run, including the rollback rehearsal, and establish the real downtime window from it.
  • Run the cutover, hold the go/no-go gates, and call rollback if abort criteria are met.
  • Capture and assemble all seven evidence criteria.
  • Provide hypercare for the agreed period and remove our access at closeout.

Your team

  • Provide a dedicated technical point of contact for the duration.
  • Provide the access listed in prerequisites.
  • Make application code changes we specify, or engage us separately to make them.
  • Confirm and, if necessary, implement connection retry logic in the application.
  • Sign off collation, service tier, and purchasing model.
  • Execute the DNS or connection-string change at cutover.
  • Make application owners available for both smoke tests.
  • Approve the downtime window and abort criteria in writing.
  • Coordinate any third-party vendor whose application or schema is in scope.

What's not included

Azure consumption costs — compute, storage, backup retention, and bandwidth are billed by Microsoft directly.
Application code rewriting — we specify exactly what must change and validate it once changed. Making the changes inside your application is quoted separately, and on this platform it is frequently the larger number; where it amounts to replatforming, that is Legacy Application Modernization to Azure.
Vendor application remediation — where a third-party product depends on unsupported features, resolution is between you and the vendor.
Re-architecture of cross-database dependencies — consolidating five databases into one, or splitting the data-access tier, is a design engagement rather than a migration.
SSIS, SSRS, and SSAS migration — quoted separately.
Migration of features Azure SQL Database does not support — CLR, Service Broker, FILESTREAM, FileTable, `xp_cmdshell`, and Database Mail are replaced or retired, not migrated.
Query and index tuning beyond remediating regressions against the agreed baseline.
Geo-replication, failover groups, or elastic pool design — quoted as add-ons.
Decommissioning the source infrastructure after the fallback period.
Support beyond the stated hypercare period — available under the Azure Resource Monitoring and Maintenance service; right-sizing the run-rate afterwards is the Azure Cost Optimization and FinOps Assessment.
Migration to Azure SQL Managed Instance or SQL Server on an Azure VM — different targets, different methods, separate services; the assessment says which you need.

Limitations & technical notes

!You cannot restore an Azure SQL Database backup to SQL Server. Rollback means reverting to the source server, which we keep intact and read-only, and manually reconciling anything written to Azure after cutover. This is why the trial run and the pre-release smoke test matter more here than on any other target.
!Planned-downtime windows are proportional to data volume and shape, not just size — a 100 GB database with heavy LOB content can take longer to export and import than a 250 GB database of narrow rows. We quote your window from the trial run, never from a table of estimates.
!The minimal-downtime path requires a primary key on every migrated table, without exception, because transactional replication cannot publish a table without one. Where a vendor schema cannot be modified, minimal-downtime migration to this platform is not available and the planned-downtime path or a different target is the answer.
!Transient connection faults are normal operation on this platform. Applications without retry logic will experience intermittent failures that look like outages and will be blamed on the migration. Confirming and, where needed, implementing retry logic is treated as a prerequisite rather than a nicety.
!Service tier selection drives both cost and performance. Under-provisioning produces a migration that meets every technical criterion and satisfies nobody. The assessment models the tier from your observed workload, and the performance criterion is measured against the tier you chose.
!Cross-database queries do not work. Three-part naming across databases is the single most common blocker on this platform and there is no configuration that resolves it — only application change, elastic query for read-only cases, or database consolidation.
!This service does not include an instance. If the assessment finds you need SQL Agent, cross-database queries, or a linked server badly enough that replacing them costs more than the platform saves, it will recommend Managed Instance instead, and we will migrate you there.
!The listed three weeks run from kickoff to the end of hypercare and cover a single database on the path the assessment assigned, with remediation the assessment sized to fit inside the window and application-side changes complete before it opens; the database count and data volume the window holds are confirmed in the assessment, and the quote states them. Remediation that does not fit is quoted as a separate phase and completed first; larger estates, elastic pool consolidation, and Hyperscale migrations are quoted and scheduled separately.
!Microsoft's first-party tooling for this target has changed — with the Azure Data Studio migration extension retired in February 2026, Microsoft currently points to the Azure Database Migration Service for offline and schema migration and to partner tooling for online replication; native transactional replication with Azure SQL Database as a subscriber remains a documented path and is our default for minimal downtime. The assessment is written against the platform as it stands on the day it is issued and states its verification date; findings older than 60 days are re-checked before migration starts.

Frequently asked questions

How much downtime will we have?

The planned-downtime path is a window proportional to your data — typically hours, and we give you the real number after the trial run rather than before. The minimal-downtime path is minutes, using transactional replication to keep the target current until cutover. Which one you want is usually a straightforward commercial question: the minimal-downtime path costs more and carries the primary-key constraint, so if a Saturday-night window is acceptable, take the planned-downtime path.

What does it cost?

From $3,200, fixed in writing from the assessment findings. The floor is the planned-downtime path for a single database within the three-week window, with database-side remediation and SQL Agent replacement limited to what the assessment sized to fit. What moves the number above it: the minimal-downtime path, additional databases and their size, remediation effort — how many Agent jobs need rebuilding, how many cross-database dependencies exist, whether the authentication model changes — and hypercare beyond the window. Application code changes are separate and are often the larger cost on this platform. The $950 assessment produces the quote; you pay for the migration after you approve delivery.

How long does it take?

Three weeks from kickoff to the end of hypercare for a single database: design, database-side remediation, and the Agent-job replacements in weeks one and two; the trial run at the end of week two; cutover, validation, and hypercare in week three. The window holds only because the assessment has already sized the remediation to fit and any application-side changes are complete before kickoff — where the assessment finds more, that phase is quoted and completed first, and the three-week window starts when it is done. Your quote states the schedule.

Why does migrating to Azure SQL Database take more effort than migrating to an Azure VM, when the platform itself is cheaper?

Because the work is different. An Azure VM migration moves a database between two copies of the same product. This is a platform change where SQL Agent, cross-database queries, linked servers, CLR, and Service Broker all have to be replaced with something else that does the same job. The Azure bill afterwards is usually lower — often substantially — but getting there costs more. The assessment models the total, including the Azure run-rate, so you can see whether the payback period justifies it.

How do you prove there was no data loss?

Planned-downtime path: the source is frozen read-only before export begins, so there is no window in which writes can be missed. Minimal-downtime path: a tracer token confirms the replication distribution queue has fully drained before replication is disabled — that is a go/no-go gate, not a check afterwards. Both then reconcile per-table row counts and `HASHBYTES` aggregates between source-at-freeze and target, and match `sys.objects` counts. All of it lands in the evidence pack.

Why does the minimal-downtime path use transactional replication when your Azure VM page argues against it?

Because the reasoning is about fitness for purpose, not dislike of the tool. Migrating to an Azure VM, you can restore a backup chain, which is higher fidelity and has no schema constraints — so replication is the wrong choice there. Azure SQL Database cannot restore a `.bak` file at all, so for minimal downtime, transactional replication with the database as a push subscriber is genuinely the right mechanism. It also brings its constraints with it, which is why that path requires a primary key on every table and takes the effort it does.

We have tables without primary keys. What now?

The minimal-downtime path is unavailable for those databases — transactional replication cannot publish a table without one, and there is no workaround. Your options are the planned-downtime path, adding primary keys where the schema is yours to change, or a different target platform. The assessment finds this on day two rather than week three.

What happens to our SQL Agent jobs?

They are rebuilt. Azure SQL Database has no SQL Agent. Depending on what each job does, the replacement is Elastic Jobs, an Azure Automation runbook, a Logic App, or a Function. We inventory every job in the assessment, build and test the replacements before cutover, and demonstrate them running on schedule as a sign-off criterion. This is often the single largest workstream in the project.

Our application queries across four databases. Is that a problem?

Yes, and it is the most common blocker on this platform. Azure SQL Database does not support cross-database queries and no setting changes that. The realistic answers are consolidating those databases into one, moving the join into the application tier, using elastic query for read-only cross-database reads, or choosing Managed Instance instead — which does support cross-database queries and is frequently the cheaper total answer once the rewrite is priced. The assessment prices the options.

Should we choose Azure SQL Database, Managed Instance, or an Azure VM?

Azure SQL Database for a self-contained, modern application database where you want the lowest run cost and the least operations work. Managed Instance where you need the SQL Server surface — cross-database queries, SQL Agent, Service Broker — without managing servers. Azure VM where you need OS-level access, an unsupported feature, or a specific SQL Server build. The assessment compares all three against your actual environment. We migrate to any of them, so the recommendation costs us nothing either way.

How is this different from your hourly Azure SQL Database migration?

The hourly service is the right product for one self-contained database with no Agent jobs, no cross-database dependencies, and a planned window you can live with — a short, time-and-materials job. This engagement is for databases where the remediation is the project and you want a fixed price, a rehearsed cutover, replaced functionality demonstrated on schedule, and an evidence pack. If the hourly product fits, the assessment says so.

Will performance be the same?

That is a measured success criterion. We capture a Query Store baseline of ten business-critical queries before the move and compare after. The usual cause of regression here is choosing a service tier below what the workload needs, which the assessment models from your observed resource consumption before you commit.

What is connection retry logic and why do you keep mentioning it?

Azure SQL Database occasionally drops connections as part of normal platform operation — failovers, maintenance, resource governance. Applications are expected to catch those errors and reconnect. Applications that do not will throw intermittent errors after migration, users will call them outages, and the migration will get the blame. Confirming your application handles this is a prerequisite, and adding it where it is missing is remediation work we will identify and quote.

Can we roll back?

Within the fallback period, yes — the source stays intact and read-only, and reverting means restoring write access and reversing the connection change. What you cannot do is restore an Azure SQL Database backup onto SQL Server, so anything written to Azure after cutover has to be reconciled manually. That is why the trial run rehearses the rollback and why the smoke test happens before users are let back in.

Do you need to do the assessment first?

Yes, without exception. On this platform the assessment routinely changes the answer — most often by showing that the remediation cost makes Managed Instance cheaper overall. Finding that out for $950 before you commit is the entire point.

Didn’t find your question?

Ask it here. A real engineer answers by email within one business day — and if it’s a good one, it becomes part of this page so the next person finds it.

Answered by a person, one time, to your inbox. Nothing you type here is published without a human reviewing and anonymizing it first.

Often combined with

from $3,200
3 weeks
Request a migration quote