An Azure service for ingesting, preparing, and transforming data at scale.
For ADF native CDC, incremental behavior depends on the CDC checkpoint state, not on a watermark column. A watermark column is not required when Enable native change data capture is used for Azure SQL MI/SQL DB/SQL Server sources.
Based on the described behavior, the most likely causes are:
- The checkpoint is being reset
- By default, the checkpoint is tied to the pipeline name and activity name.
- If either name changes, ADF resets the checkpoint and the next run starts from the beginning or from current changes.
- If a custom Checkpoint key is used, it must stay consistent across runs.
- The first published trigger behavior is being misunderstood
- After debugging, when the published pipeline is triggered for the first time, it restarts from the beginning or gets changes from now on.
- Debug runs do not preserve the checkpoint for later published runs.
- The pipeline is being rerun from a run whose checkpoint does not represent the expected state
- In Monitor, rerun uses the previous checkpoint of the selected pipeline run.
- For ADLS Gen2 sink, native SQL CDC does not automatically imply merge/upsert semantics in files
- The documented SQL native CDC examples describe direct database-to-database replication and ETL in mapping data flow.
- For file sinks such as Parquet in ADLS Gen2, ADF can still read SQL CDC delta rows, but the sink output is just written files. If the expectation is “only changed rows written each run,” the source checkpoint must be preserved correctly.
What to check:
- In the mapping data flow source, confirm Enable native change data capture (Preview) is enabled for the Azure SQL MI source.
- In the Data Flow activity, confirm the Checkpoint key value is exactly the same on every run.
- Do not rename the pipeline, data flow activity, or change the checkpoint key after the first successful run.
- Do not rely on debug runs to establish the production checkpoint.
- Trigger the published pipeline, then run it again without changing names or checkpoint settings.
Important limitation:
- For SQL CDC, ADF loads only net changes from SQL CDC.
If the pipeline still behaves like a full load on every run, the practical fix is to reset to a valid checkpoint strategy:
- Keep one stable published pipeline and activity name.
- Keep one stable custom checkpoint key.
- If the current checkpoint state is invalid or mismatched, update the checkpoint value and test again. A documented Q&A case reports the issue was resolved after correcting the checkpoint value.
References:
- Change data capture in Azure Data Factory and Azure Synapse Analytics
- Copy and transform data in Azure SQL Managed Instance using Azure Data Factory or Synapse Analytics
- Data Flow activity in Azure Data Factory and Azure Synapse Analytics
- Copy and transform data to and from SQL Server by using Azure Data Factory or Azure Synapse Analytics
- ADF Pipeline failed with error "An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_net_changes"