- 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
- 01Fabric Mirroring, what does it do?
- 02How is Fabric Mirroring billed?
- 03Fabric Mirroring for SQL Server, what the source must meet
- 04Fabric Mirroring limitations
- 05Open mirroring and alternatives
- 06FAQ
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 2022 | SQL Server 2025 | |
|---|---|---|
| Mechanism | Change Data Capture, CDC | native, without CDC |
| Primary key on every table | required | optional |
| Azure Arc | no | required, with a managed identity |
| CDC on the source | Fabric enables it | must be disabled |
| Table schema change | the table's replication fails, CDC is reset by hand and the table is reloaded | the 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?
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 happens | When |
|---|---|
| The table isn't mirrored | without 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 across | computed, xml, json, vector, geometry, geography, hierarchyid, sql_variant, rowversion, image, text, ntext and user-defined types |
| The value silently changes | datetime2(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 missing | the 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 across | row-level security, object permissions and dynamic data masking. Security is rebuilt in Fabric |
| Replication starts from scratch | after 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.