The scenario
A mid-market distributor runs its reporting on a SQL Server data warehouse, fed every night by an SSIS package from the order system. Leadership wants machine learning and GenAI on that data. The warehouse can't serve it: no central governance, batch-only loads, compute tied to SQL Server licences. The AI roadmap is stuck behind the platform.
We built that situation from Microsoft's own public sample, WideWorldImporters: the order system and its data warehouse, with the stored procedures, temporal tables and nightly ETL a real mid-market warehouse has. Then we migrated it to the Databricks Data Intelligence Platform using the same five steps and fixed-price acceptance rules we use for clients.
What we migrated
| Source (SQL Server 2022) | Target (Databricks, Unity Catalog) |
|---|---|
| Data warehouse: 29 tables, about 1 million rows | 29 Delta tables in one governed schema |
| 25 T-SQL procedures and functions (2,160 lines) | 21 converted to Databricks SQL procedures; 4 retired (columnstore, In-Memory OLTP, PolyBase setup) with a documented Databricks equivalent |
| Nightly SSIS ETL: 13 extract procedures (1,100 lines of T-SQL over temporal history) | A Lakeflow declarative pipeline: 24 Auto Loader bronze tables, 13 staging views, then the converted load procedures |
| The sample's reports | 7 gold report views |
How we did it
- Assess. Exported every object, ran the Lakebridge Analyzer and sized the estate: 54 scripts, 25 procedures and functions, 3 of them very high complexity. The wave fits our M tier.
- Design. Medallion layout under Unity Catalog (bronze for raw landing, the converted warehouse, gold for reports), a replacement decided for every source object, and a one-wave plan with written acceptance criteria.
- Prove. Ran Lakebridge's converters first. They returned 3 of 25 objects as "clean", and none of those would have run. Everything that mattered was converted with AI assistance, every change reviewed and approved by a human engineer, then proven equivalent: the original T-SQL and the converted procedures ran on identical input, and all 16 affected tables came out identical.
- Migrate. Landed every table from SQL Server through Parquet into Delta, and rebuilt the nightly ETL as a Lakeflow pipeline. The 13 extracts that walk temporal history with cursors became set-based SQL and matched the originals in 37 of 37 comparisons.
- Validate and cut over. Three independent checks, below.
- Lakebridge reconcile against the live SQL Server: row counts, row hashes and column values on all 29 tables. Passed 29 of 29. We then changed one value on one row on purpose; the reconcile flagged exactly that row.
- Parallel run: seven simulated business days, legacy ETL on SQL Server and the new ETL on Databricks after each day. At the end, 16 of 16 warehouse tables and 7 of 7 reports were identical.
- Cut-over runbook with entry criteria, a go/no-go point, rollback and sign-off. The old platform is paused, not deleted, until the owner signs.


Results
| Measure | Result |
|---|---|
| Tables reconciled | 29 of 29, zero missing or mismatched rows |
| Parallel run | 16 of 16 tables and 7 of 7 reports identical after 7 days |
| Code proven equivalent to the original | 21 procedures (16 of 16 tables) and 13 ETL extracts (37 of 37 comparisons) |
| Converted automatically by the transpilers | Effectively 0%; all T-SQL that mattered was converted with AI assistance, with final review by a human engineer |
| Defects in the migrated data | 0. Three bugs found in Microsoft's original code, flagged and kept as-is for fidelity |
| Elapsed time | Two working days, assessment to a passing acceptance report |
| Databricks compute for the whole migration | About $14 to $18 at list price |
| Running the new nightly ETL | About $13 to $16 a month on the smallest serverless warehouse |
What we learned
- Conversion is automated. Validation isn't. The transpilers' "clean" count was the wrong measure; the effort went into proving equivalence, and that is what a fixed price has to cover.
- The ETL hid more logic than the warehouse. Cursors over temporal history, cascading updates, columns renamed inside SSIS. Re-platforming "just the pipeline" meant the trickiest 1,100 lines in the estate.
- Databricks SQL now has real transactions in procedures. A failed load rolled back completely, as SQL Server's did, once the tables carry the right Delta feature.
- Surrogate keys change; joins don't. Key numbers differ between platforms for new rows. We compare on business keys and tell clients up front.
- The reconcile tool needed tuning for SQL Server. Lakebridge flagged 243 rows with names like "Pájaros" that were in fact identical, because SQL Server hashes text in a different encoding. We fixed it in our harness, not in the data. Budget for this on any SQL Server estate.
- Lineage stops at stored procedures. Unity Catalog traced the pipeline and the reports automatically, but not the procedures that load the warehouse. Where governance matters, move that logic into the pipeline or document it.
- Compute is not the budget. The whole migration used less than $20 of Databricks compute. The cost of a migration is the work of proving it right.

Limits of this proof
- It is Microsoft's public sample, not a client estate: about 1 million rows, where a typical client warehouse holds terabytes. Volume changes run times, not the method.
- It ran on a Databricks Free Edition workspace. Scheduled jobs and real billing data need a paid workspace; the cost figures are measured run time at list price.
- No BI tool was repointed; the gold views carry the sample's report queries.
Reproduce it
Every step is scripted in our migration kit: Terraform for the source, export and Lakebridge scripts, the converted code, the Lakeflow pipeline, the reconcile configuration, the parallel-run harness and the cut-over runbook. On request, we walk your data engineers through it and rerun any step in this write-up so they can check the numbers themselves.
Start with the assessment. A fixed-fee Assess gives you the same inventory, complexity sizing and costed wave plan for your warehouse, with no commitment beyond it. Book a 30-minute scoping call, or read the customer case study.
