Skip to content
METRIC OAK

New: the 3-week Data Platform Assessment: fixed fee, priced roadmap. See what's included →

Migration

SSIS to Databricks migration: how to convert SQL Server Integration Services packages

Moving SSIS packages to Databricks: inventory .dtsx files, map data flow components to Spark SQL and Delta, rebuild control flow and SQL Agent schedules as Lakeflow Jobs, and reconcile before cutover.

Hemant Walchale

Hemant Walchale
· 3 min read

SQL Server Integration Services (SSIS) has run a great deal of Microsoft-shop ETL for twenty years. When the warehouse moves to Databricks, the packages that feed it need rebuilding, because SSIS packages only run on the SSIS runtime. The good news is that most SSIS logic maps cleanly to SQL.

This is the approach we recommend.

1. Inventory the packages

SSIS packages (.dtsx) are XML, deployed to the SSIS catalog (SSISDB) or the file system. Export them, then count the component types across the estate:

grep -ohE 'componentClassID="[^"]+"' *.dtsx | sort | uniq -c | sort -rn

Also collect the SQL Server Agent jobs that run them (schedules and step order), project and package parameters, SSISDB environments (connection strings per environment), and the execution history that shows which packages still run.

2. Map data flow components

SSIS data flow component On Databricks
OLE DB, ADO.NET, Flat File, Excel sources Ingest into bronze Delta tables (Lakeflow Connect, Auto Loader for files, or JDBC reads)
Derived Column, Data Conversion SQL expressions and CAST
Conditional Split WHERE per output, or a CASE column feeding separate writes
Lookup A join; broadcast small reference tables
Merge Join, Sort A join; no sort needed
Aggregate GROUP BY
Union All UNION ALL
Slowly Changing Dimension AUTO CDC with SCD type 2 in Lakeflow Declarative Pipelines, or MERGE
OLE DB Command (row-by-row updates) One set-based MERGE; usually much faster
Script Component Rewrite in SQL or Python
OLE DB and SQL Server destinations Writes to Delta tables

3. Rebuild control flow as Lakeflow Jobs

  • Data Flow Tasks become pipeline or notebook tasks.
  • Execute SQL Tasks become SQL tasks.
  • Precedence constraints (success, failure, completion, expressions) become task dependencies with run-if conditions and if/else condition tasks.
  • Foreach Loop containers become for-each tasks or a loop inside one task.
  • Script Tasks become Python tasks.
  • Send Mail Tasks become job notifications.
  • File System and FTP Tasks usually disappear: files land in cloud storage and Auto Loader picks them up.
  • SQL Server Agent schedules become job schedules or file-arrival triggers.
  • Parameters and SSISDB environments become job parameters and per-environment configuration in version control.

4. Reconcile, then cut over by domain

Run the new pipelines next to SSIS against the same sources and compare every target table. Common differences: implicit conversions in Derived Columns, collation and trailing spaces, NULL handling in Lookups (the “no match” output), and datetime precision. Cut over a domain once comparisons are clean and its owner signs off, then disable the matching Agent jobs the same day.

The short version

Export the packages, count component types, map data flows to SQL and Delta, replace row-by-row commands with set-based merges, rebuild control flow and Agent schedules as Lakeflow Jobs, rewrite scripts and reconcile every table before switching off each job.

Moving SSIS to Microsoft Fabric instead? See our SQL Server and SSIS to Fabric guide, or browse all migration guides. For a fixed-price plan, see the Data Platform Assessment.

Not sure where your own platform stands? Take the free 3-minute data platform scorecard, or see how we work on Databricks. Unfamiliar terms are explained in the data engineering glossary.

Frequently asked questions

Can SSIS packages run on Databricks?

No. SSIS packages run on the SSIS runtime (SQL Server, or the Azure-SSIS integration runtime in Azure Data Factory). To move to Databricks, the logic in each package is rebuilt as Spark SQL or PySpark, and the control flow becomes Lakeflow Jobs.

What happens to Script Tasks and Script Components?

They contain C# or VB.NET code and must be rewritten, usually in Python. Many turn out to be small (string clean-up, file handling, calling an API) and become a few lines of SQL or Python; read each one before estimating.

Is there a halfway option?

Yes. Teams sometimes lift packages into the Azure-SSIS integration runtime first to leave on-premises servers, then rebuild them on Databricks domain by domain. It buys time but means running two ETL platforms for a while.

Have 30 minutes? Get a senior architect’s view of your data platform.

No sales deck. You talk to the engineer who would lead the work.

Book an architecture review