Mirroring

SQL Server to Microsoft Fabric

How to get an on-premises SQL Server or Azure SQL into Microsoft Fabric, mainly with Mirroring. What Mirroring does, how it's billed, where its limits are and what to use instead.

Vojtěch Šíma, Microsoft MVP 4 min read Updated October 11, 2026

In short
  • Mirroring keeps a continuous, read-only copy of a SQL database in Fabric as Delta tables in OneLake, and the replication itself doesn't take CU from the capacity.
  • You pay for queries over the mirrored data and for storage above the free limit, which depends on the capacity size.
  • On SQL Server 2016 to 2022, Mirroring is built on CDC: every table needs a primary key, SQL Server Agent must run all the time, and a schema change stops the table's replication.
Contents 6 sections
  1. 01Fabric Mirroring, what does it do?
  2. 02How is Fabric Mirroring billed?
  3. 03Fabric Mirroring for SQL Server, what the source must meet
  4. 04Fabric Mirroring limitations
  5. 05Open mirroring and alternatives
  6. 06FAQ
Getting started
  1. How to learn Power BI
  2. Your data journey in four stages
  3. Power BI on Dynamics 365 in manufacturing
  4. Dynamics 365 F&O to Fabric
  5. Power BI gateway and data on your own servers
  6. SQL Server to Fabric
  7. How a Power BI report is built

All guides

Fabric Mirroring, what does it do?

Mirroring creates a Mirrored database item in Fabric that continuously copies tables from the source database into OneLake as Delta tables. The copy is read-only and gets its own SQL analytics endpoint, the same as a lakehouse. On top of it you then build notebooks, a warehouse and semantic models. Replication runs "outside" the Fabric capacity, so you don't pay CU for the ongoing sync.

Mirroring by SQL Server version

SQL Server 2016 to 2022SQL Server 2025
MechanismChange Data Capture, CDCnative, without CDC
Primary key on every tablerequiredoptional
Azure Arcnorequired, with a managed identity
CDC on the sourceFabric enables itmust be disabled
Table schema changethe table's replication fails, CDC is reset by hand and the table is reloadedthe snapshot reruns on its own

A database that isn't reachable from the internet needs an on-premises data gateway or a virtual network data gateway.

How is Fabric Mirroring billed?

How you pay for Mirroring

Replication into OneLake costs no CU. You pay for queries over the mirrored data, that is, the SQL endpoint, Spark, Direct Lake and model refreshes, and for storage above the free limit, which depends on the capacity size.

According to Microsoft, Mirroring storage is free up to 1 TB for every CU of capacity, so F2 gets 2 TB and F64 gets 64 TB. Above the limit you pay as for regular OneLake storage (Mirroring cost). When you pause the capacity, replication stops and nothing is transferred while it's down. During that time you pay for all of the mirrored data storage.

On the source side there's extra work you don't see in Fabric. CDC on SQL Server writes changes into its own tables, and the gateway needs a machine that runs all the time. You pay for both in your own environment.

Fabric Mirroring for SQL Server, what the source must meet

  • SQL Server Agent must run continuously
  • When capture isn't running, the transaction log isn't truncated, not even in simple recovery, and it grows until CDC catches up.
  • Fabric temporarily needs the sysadmin role to set up CDC; after that, CONNECT and SELECT are enough.
  • Only the Admin or Member role in the workspace can create a mirrored database.

Fabric Mirroring limitations

What happensWhen
The table isn't mirroredwithout a primary key on versions 2016 to 2022, with a clustered columnstore index, temporal and ledger history, Always Encrypted, in-memory, graph and external tables
The column silently doesn't come acrosscomputed, xml, json, vector, geometry, geography, hierarchyid, sql_variant, rowversion, image, text, ntext and user-defined types
The value silently changesdatetime2(7) loses the seventh decimal place, datetimeoffset(7) the time zone as well, a LOB over 1 MB is truncated to 1 MB
Tables over the cap are missingthe cap is 1,000 tables per database. With Mirror all data, the first 1,000 in alphabetical order are taken and the rest are skipped
Permissions don't come acrossrow-level security, object permissions and dynamic data masking. Security is rebuilt in Fabric
Replication starts from scratchafter you stop and restart Mirroring, all tables are reloaded

Microsoft keeps the full list of limitations in its SQL Server mirroring documentation. How Mirroring behaves on real data, we write about on the blog.

Open mirroring and alternatives

Open mirroring opens the same mechanism to any source. Your app or tool writes change files into a landing zone in OneLake, and Fabric merges them into Delta tables itself.

A table Mirroring can't bring across goes into Fabric another way. A Copy job or pipeline through the gateway copies the table without touching the source, but you lose continuous replication and need your own watermark. Mirroring and Copy job then run side by side in one environment, and the logic behind them has to allow for one table having no watermark and another having one.

Mirroring is the cheapest start for a database whose schema rarely changes and whose tables have primary keys. With an old warehouse that has a frozen schema and tables without keys, it almost always ends up as a combination of Mirroring and Copy job.

FAQ

Does Mirroring consume CU from the capacity?

The replication itself doesn't; it runs outside the capacity. Only queries over the mirrored data consume CU, that is, the SQL endpoint, notebooks, Direct Lake and semantic model refreshes. Storage is free up to a limit based on the capacity size.

Does every table need a primary key?

On SQL Server 2016 to 2022, yes, because Mirroring there is built on CDC. SQL Server 2025 and Azure SQL Database don't require a primary key. On Azure SQL Database, tables without a key can be mirrored since April 2025. Older tables without a key aren't added to Mirroring on their own, though, and you have to select them (Azure SQL Database mirroring limitations).

What happens when we pause the capacity?

Replication stops, and nothing is transferred while the capacity isn't running. Note the difference from stopping Mirroring itself: when you restart it, all tables are reloaded from scratch.

Do we need a gateway for Mirroring?

Yes, if the SQL Server isn't reachable from the internet. Mirroring then goes through an on-premises data gateway or a virtual network data gateway, and the gateway machine must run all the time.

Where do you stand?

Implementing Fabric

€2,100first step, Environment and Cost Audit, excl. VAT

We'll connect your SQL Server to Fabric in your environment, with Mirroring, Copy job or a combination of both, depending on what your tables can handle. Want to know first what your current environment costs you? Start with the Environment and Cost Audit.

What exactly you get

Contact

Still have a question?

Send it to us. We'll answer even if nothing more comes of it. You'll hear from us within two working days.

Book an intro call

Please fill in your name and company.

Please check your email address, that's where we send our reply.

Without your consent we can't reply.

Sent. We'll get back to you within two working days. In a hurry? Call David on +420 777 542 792.