Pro

SQL Server to MySQL.
Nothing lost silently.

Most conversion tools guess. A datetime2(7) quietly becomes a DATETIME(6), a datetimeoffset loses its offset, and you find out months later. SQLAtlas shows you each of those choices and waits.

A running migration from a SQL Server database to MySQL: copied row count, the column route for dbo.orders with one decision taken for datetimeoffset, and per-table verification.
SQL Server to MySQL in progress. Sample data.

How a conversion works.

  1. Source and target. Pick a SQL Server or Azure SQL connection and a MySQL or MariaDB connection. The source is opened read-only, with a consistent snapshot.
  2. Tables. Choose what to copy.
  3. Plan and decisions. SQLAtlas maps every column. Where a mapping could lose information, you decide: for example a datetimeoffset becomes a UTC DATETIME(6) plus a separate offset column, or text. Nothing runs until every decision is made.
  4. Preflight. Checks the target before writing.
  5. Run. Rows are copied as typed parameters, in dependency order, with checkpoints.
  6. Report. Rows written, rejected and verified, per table, saved as HTML and JSON. Views, procedures, functions and triggers are listed in the report, not converted.
Migrate between engines: plan and decisions for SQL Server to MySQL, with a passed preflight showing the target is empty and the source opened read-only.
Plan, decisions and preflight, before anything is written. Sample data.
MSSQL Server MyMySQL typed parameters dbo.customerscustomers dbo.productsproducts dbo.ordersorders decision dbo.order_linesorder_lines dbo.audit_logaudit_log lossless your decision verified after load
Every table on its own route, verified at the end.

The honest table

From the app's compatibility matrix: how the 27 SQL Server test column types map, before you make any choice.

SQL Server column types by target engine
ClassTo MySQLTo MariaDBMeaning
Lossless1718Every value survives and compares equal
Equivalent33Every value survives; behaviour differs slightly (for example bit to TINYINT(1))
Lossy11datetime2(7) to DATETIME(6): the seventh digit. You accept it or keep a text copy; rows are never rounded silently
Decision54datetimeoffset, uniqueidentifier, JSON (MySQL), geometry, sql_variant: you choose
Unsupported11rowversion: copy as binary or omit

Tested on real databases

SQLAtlas converted eight public sample databases, including AdventureWorks, WideWorldImporters, Northwind and Chinook, between SQL Server 2022, MySQL 8.0 and 8.4, MariaDB 10.11 and 11.4, and PostgreSQL 16. After each of the 46 runs, a separate check compared every value of every row, plus the keys, indexes, checks and defaults. All 46 matched.

  • 46 of 46conversion runs matched, value by value
  • 48.8 Mrows written and checked, none sampled
  • 0rows rejected
  • 11bugs found and fixed before release, each with a test

How SQLAtlas is tested

Azure SQL support is built in and tested against a local SQL Server set up like Azure (certificate-verified TLS, contained users). A run against a live Azure SQL instance is on the pre-launch checklist.

Also

All 25 source and target combinations of SQL Server, MySQL, MariaDB, PostgreSQL and SQLite, in either direction.

Conversion is part of SQLAtlas Pro, a one-time unlock. See pricing · SQL Server on Mac