Sources

SQL Server

Change-table CDC from SQL Server, RDS, and Azure SQL Managed Instance — enabling CDC per database and table, the Agent, and cleanup retention.

SQL Server sources use SQL Server's own change data capture. Fabric enables CDC, then polls each table's change table and maps the change rows to inserts, updates, and deletes. There is no replication slot and no subscription — SQL Server's capture job does the work.

Supported deployments

The same connector serves self-hosted SQL Server, Amazon RDS for SQL Server, and Azure SQL Managed Instance. CDC is enabled per database and per table the same way on each.

Prerequisites

SQL Server Agent

CDC's capture and cleanup jobs run under the SQL Server Agent. If the Agent is not running, the change tables never fill and the poller sees nothing. Confirm the service is started on the instance.

Enable CDC on the database

Run as an administrator (a login with db_owner on the database or sysadmin):

USE mydb;
GO
EXEC sys.sp_cdc_enable_db;
GO

Enable CDC on each table you select

USE mydb;
GO
EXEC sys.sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name   = N'customers',
    @role_name     = NULL,
    @supports_net_changes = 1;
GO

A selected table with no capture instance is refused by name. Enable CDC after seeding a table if you want the Fabric snapshot to own the existing rows.

Retention must outlast your outage window

Fabric refuses a cleanup retention shorter than 72 hours (its default requirement). Raise it on the server:

EXEC sys.sp_cdc_change_job @job_type = N'cleanup', @retention = 10080;  -- minutes
GO

If the window is exceeded, change-table rows are purged and a resume silently restarts from the top rather than erroring — size the window for your worst-case downtime.

A least-privilege login

Fabric needs SELECT on the cdc schema (for change-table polls) and SELECT on the base tables (for the snapshot and schema discovery):

USE mydb;
CREATE USER fabric_cdc FOR LOGIN fabric_cdc;
GRANT SELECT ON SCHEMA::cdc TO fabric_cdc;
GRANT SELECT ON SCHEMA::dbo TO fabric_cdc;
GO

Enabling CDC itself needs sysadmin or db_owner and is a one-time setup step, separate from the login Fabric runs as.

Network and driver

The runner reaches host:1433. Fabric ships the ODBC Driver 18 for SQL Server and, on the engine default and require, sets TrustServerCertificate=yes in the connection string — the connection is encrypted but the certificate is not verified. A verify-full source turns that off and verifies the chain and host name instead; see TLS and encryption in transit.

Connection fields

FieldRequiredDefaultNotes
Connector nameYes—Unique across sources.
HostYes—
PortYes1433
UsernameYes—Login used for polling and snapshot.
PasswordYes on create—Leave blank on edit to keep the stored password.
DatabaseYes—A single database. Test connection lists online user databases. Read-only after creation.

One database per source

A SQL Server source targets exactly one database. To capture from several, create one source per database.

How it replicates

  • Fabric polls each table's change table cdc.<schema>_<table>_CT with an LSN bookmark, ordered by __$start_lsn.
  • Update pairs emitted by CDC (__$operation 3 and 4) are collapsed into a single update; CDC's own metadata columns are stripped before landing.
  • The snapshot captures sys.fn_cdc_get_max_lsn() before scanning and checkpoints per-table progress, so a mid-snapshot crash resumes under the same mark.
  • Snapshot chunking uses a single-column unique clustered index or an identity column; a table with no safe key falls back to one unchunked pass.

Gotchas

Watch out

  • Per-table capture instances are checked when the runner starts, not at source creation — at creation no tables are selected yet.
  • The classic silent failure is a stopped SQL Server Agent: the change tables stay empty and the poller sees no rows.
  • A login failure is treated as a held state, not a crash loop — the source shows held with the refusal reason.
  • Non-dbo schemas are supported: the change table is named cdc.<schema>_<table>_CT.