Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
I’m using Qlik Cloud and the Microsoft SQL Server (Microsoft CDC based) connection type.
For several of my replication tasks, I consistently receive the following error:
02450713: 2025-11-25T10:14:20 [SOURCE_CAPTURE ]E: MS-CDC Fitness Check: Database is not enabled for MS-CDC [1020101] (sqlserver_mscdc.c:729)
02450713: 2025-11-25T10:14:20 [SOURCE_CAPTURE ]E: Failed in MS-CDC fitness check [1020101] (sqlserver_endpoint_capture.c:286)
02450713: 2025-11-25T10:14:20 [SOURCE_CAPTURE ]E: Error executing command [1020101] (streamcomponent.c:2069)
02450713: 2025-11-25T10:14:20 [TASK_MANAGER ]E: Stream component failed at subtask 0, component st_0_EP_8C02ejUonfw2P6o0ADgh4A [1020101] (subtask.c:1504)
02450713: 2025-11-25T10:14:20 [SOURCE_CAPTURE ]E: Stream component 'st_0_EP_8C02ejUonfw2P6o0ADgh4A' terminated [1020101] (subtask.c:1675)
02450707: 2025-11-25T10:14:20 [TASK_MANAGER ]W: Task 'TASK_R4v-lHpcOQmtS1r9xubfrg' encountered a fatal error (repository.c:6387)
However, CDC is fully enabled on the database and also enabled on all required tables.
All CDC system tables are accessible, and the replication user has all necessary permissions.
To troubleshoot, I additionally tried the following:
Added the internal property: skipMscdcJobFitnessCheck = true in the connection settings - no change.
Granted the user db_owner permissions, also no effect.
It’s important to note that CDC replication works correctly for other databases using the same configuration, so the issue only affects a few specific databases even though everything appears identical.
Does anyone have an idea what could be causing this MS-CDC fitness check error in Qlik Cloud?
I received an update yesterday that the UseDBNameInsteadOfDBID parameter has now been enabled in Qlik Cloud.
After testing, I can confirm that the MS-CDC fitness check works correctly and replication runs without any issues.
Hopefully this will help anyone else encountering the same behavior in Azure SQL Database.
Hi @nhorvat
We need to enable source capture to verbose for some time so we can review the SELECT statement that Replicate uses to check the MS-CDC status using the database ID
Meanwhile, please run below query in source dba and see if it returns anything.
select is_cdc_enabled from sys.databases d where d.database_id=db_id()
If this is urgent, please open a support case and a member of our technical support team will be able to assist you.
Thanks
Naren
Hi @narendersarva
I ran the query you suggested:
select is_cdc_enabled
from sys.databases d
where d.database_id = db_id();
and it returns no rows.
However, CDC is definitely enabled. When I run the following query:
SELECT is_cdc_enabled
FROM sys.databases
WHERE name = DB_NAME()
AND is_cdc_enabled = 1;
I get one row with is_cdc_enabled = 1, which confirms that CDC is enabled for this database.
So it seems that in my Azure SQL Database environment, the condition d.database_id = db_id() does not match any row in sys.databases, while filtering by name = DB_NAME() works correctly.
This might explain why the MS-CDC fitness check fails, even though CDC is configured properly: if Replicate/Cloud is using a query based on database_id = db_id(), it will not find the database in this environment.
Please let me know if this helps and if there is a workaround or fix on the Qlik side for Azure SQL.
@narendersarva
I also tried adding the internal property UseDBNameInsteadOfDBID, but Qlik Cloud returned the following error:
Status(StatusCode="Internal", Detail="The following internal properties are not supported: UseDBNameInsteadOfDBID")
So it seems this parameter is not supported on Qlik Cloud.
Just to follow up on this thread and share the findings, as this might help others using Azure SQL Database with Qlik Cloud MS-CDC:
I confirmed that the issue is not related to permissions or the CDC configuration itself.
CDC is fully enabled on the database and all required tables.
The root cause appears to be that in Azure SQL Database, the value returned by DB_ID() does not always match the database_id in sys.databases. In that case, a check like:
SELECT is_cdc_enabled
FROM sys.databases d
WHERE d.database_id = DB_ID();
returns no rows, even though CDC is enabled.
But filtering by database name works correctly:
SELECT is_cdc_enabled
FROM sys.databases
WHERE name = DB_NAME();
Based on this behavior, I assume that Qlik Cloud currently performs the MS-CDC fitness check using the ID-based method, which unfortunately does not work reliably in Azure SQL.
This behavior is documented by Microsoft here:
https://learn.microsoft.com/en-us/sql/t-sql/functions/db-id-transact-sql
Because of this mismatch, the MS-CDC fitness check in Qlik Cloud fails for some databases, even though CDC is configured properly.
I also tried the UseDBNameInsteadOfDBID internal property mentioned in the Qlik article, but Qlik Cloud does not support it at the moment.
I have opened a support case, and the Qlik team is currently reviewing this scenario and working on allowing the parameter.
Once they whitelist it on Qlik Cloud, the issue should be resolved.
I received an update yesterday that the UseDBNameInsteadOfDBID parameter has now been enabled in Qlik Cloud.
After testing, I can confirm that the MS-CDC fitness check works correctly and replication runs without any issues.
Hopefully this will help anyone else encountering the same behavior in Azure SQL Database.