Sonja K
05/06/2026, 10:50 AMNULL (even for newly inserted rows)
Root cause (so far):
• The original CDC capture instance (cdc.dbo_your_table_CT) does not include the new columns
• DBA created a new capture instance (cdc.dbo_your_table_N_CT) which does include them
• Now both capture instances exist in parallel
Open questions:
1. How can I confirm which CDC capture instance Airbyte is actually using?
2. Will “Refresh stream” + keeping Incremental | Append make Airbyte switch to the new capture instance and also get a new full load of the table with data for the new columns while retaining the history?kapa.ai
05/06/2026, 10:50 AMALTER TABLE ... ADD, the existing CDC capture instance does not automatically include them. The Airbyte docs explicitly state:
> "Adding new columns to existing tables using ALTER TABLE <table> ADD <column> will not automatically be captured by the CDC stream. As a result, the column will be excluded from CDC tracking (while it might appear in the Schema section, it will return zero records)."
[MSSQL Troubleshooting]
This explains exactly why the columns are visible in Airbyte's schema but always return NULL.
Question 1: Which capture instance is Airbyte using? The knowledge sources do not explicitly describe a way to inspect or configure which capture instance Airbyte selects when multiple exist in parallel. However, the recommended fix from the docs is to disable and re-enable CDC on the table (rather than creating a second capture instance alongside the old one), which results in a single, clean capture instance reflecting the updated schema:
-- Step 1: Disable CDC on the table
EXEC sys.sp_cdc_disable_table
@source_schema = N'<schema>',
@source_name = N'<table>',
@capture_instance = N'<capture instance (typically schema_table)>'
-- Step 2: Re-enable CDC on the table
EXEC sys.sp_cdc_enable_table
@source_schema = N'<schema>',
@source_name = N'<table>',
@role_name = NULL
-- Step 3 (Optional): Validate captured columns
EXEC sys.sp_cdc_get_captured_columns
@capture_instance = N'<capture instance (typically schema_table)>';
[MSSQL Troubleshooting]
> Note: If your DBA used a @role_name when originally enabling CDC, make sure to apply the same parameters when re-enabling it, otherwise the Airbyte user may lose access to the capture instance. [MSSQL Troubleshooting]
Question 2: Will "Refresh Stream" + Incremental | Append work? Yes, a Refresh Stream is the correct action to take after resolving the capture instance issue. The Airbyte docs state that for new columns, you should:
1. Review and approve the schema changes in Airbyte.
2. Enable the newly added columns.
3. Navigate to the Status page, locate the stream, click the three dots (⋮), and choose Refresh Stream.
[CDC Limitations]
For Incremental | Append mode specifically, a Refresh and Retain Records option is available, which will re-sync the stream (getting a full load including the new column values) while retaining existing history in the destination. [Refreshes]
Recommended Action Plan 1. Have your DBA disable the old capture instance and disable the new parallel one (dbo_your_table_N_CT), then re-enable CDC cleanly on the table using the SQL above.
2. In Airbyte, click Refresh source schema to detect the updated structure.
3. Approve the schema changes and enable the new columns.
4. Trigger a Refresh Stream → Retain Records to backfill the new column values while keeping history. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Sonja K
05/06/2026, 11:11 AMkapa.ai
05/06/2026, 11:12 AMSonja K
05/06/2026, 12:11 PMkapa.ai
05/06/2026, 12:12 PMIncremental | Append mode, a refresh re-syncs the stream with a full snapshot. Whether existing destination history is retained depends on the type of refresh you choose (Retain Records vs. Overwrite). The knowledge sources do not go into further detail on this specific MSSQL capture instance swap scenario.
What the Docs Do NOT Cover The knowledge sources do not explicitly state whether swapping capture instances (rather than disabling/re-enabling CDC as a single operation) causes Airbyte to lose its LSN position or triggers any unintended behavior. I would recommend:
1. Following the exact disable + re-enable pattern recommended in the docs (single clean capture instance).
2. Using Refresh Stream → Retain Records afterward to backfill new column values without losing destination history.
For a definitive answer on LSN continuity across capture instance swaps, I'd suggest consulting the Airbyte MSSQL connector documentation or opening a support ticket, as this specific scenario is not covered in the available knowledge sources. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Sonja K
05/06/2026, 12:15 PMkapa.ai
05/06/2026, 12:15 PMSonja K
05/06/2026, 12:27 PMkapa.ai
05/06/2026, 12:28 PMSonja K
05/06/2026, 12:29 PMkapa.ai
05/06/2026, 12:30 PMSELECT statement. Without triggering this, Airbyte has no baseline values for the new columns in the destination. [CDC]
3. Schema changes detected without a refresh may cause issues. The docs recommend enabling Approve all schema changes myself to prevent newly detected columns from being included in the sync without a proper snapshot, specifically to reduce the risk of LSN issues and sync failures. [CDC Limitations]
In short: skipping the Refresh Stream step is likely to result in continued NULL values for the new columns, even if Airbyte is reading from the correct capture instance. A refresh/snapshot is a required step to properly initialize the new columns in the destination. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Sonja K
05/07/2026, 6:28 AMkapa.ai
05/07/2026, 6:28 AMMIN(sys.fn_cdc_get_min_lsn()) to return zero, triggering false LSN validation failures and breaking CDC syncs entirely. [LSN validation fix]
This is directly relevant to your situation: if the Airbyte database user does not have access to the new capture instance (e.g., because it was created with a @role_name gating role), the LSN validation could fail and cause the sync to abort. [LSN validation fix]
Recommended Next Steps 1. Check the detailed logs for LSN-related errors or permission errors on the capture instances.
2. Resolve the parallel instance situation as soon as possible by following the recommended approach — disable both capture instances and re-enable CDC cleanly on the table:
-- Disable old capture instance
EXEC sys.sp_cdc_disable_table
@source_schema = N'<schema>',
@source_name = N'<table>',
@capture_instance = N'<old_capture_instance>'
-- Disable new capture instance
EXEC sys.sp_cdc_disable_table
@source_schema = N'<schema>',
@source_name = N'<table>',
@capture_instance = N'<new_capture_instance>'
-- Re-enable CDC cleanly (with all new columns)
EXEC sys.sp_cdc_enable_table
@source_schema = N'<schema>',
@source_name = N'<table>',
@role_name = NULL
[MSSQL Troubleshooting]
3. After resolving the capture instance, trigger a Refresh Stream → Retain Records in Airbyte to re-snapshot the table with the new columns.
The parallel capture instance situation is very likely the root cause of tonight's failure. Resolving it on the database side first is the critical step. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.