Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
There is a SQL Server source limitation stating that columnstore indexes are not supported. I'm aware that only Full Load is supported for these tables, and CDC is not possible.
I found this Microsoft documentation regarding columnstore indexes and replication that states, "Replication with clustered columnstore indexes. Nonclustered columnstore indexes are supported"
It was not explicitly mentioned in the Qlik Replicate limitations whether or not non-clustered columnstore indexes are supported or not.
Regards,
Mohammed
Hi,
Just an update. I tested this by creating a dummy table, populating it, and adding a non-clustered columnstore index. Next, I created a full load + CDC task and ran it. I created a change in the source database and the result was that the table was suspended.
Table 'sandbox'.'SalesOrders' (subtask 0 thread 0) is suspended.Table 'sandbox.SalesOrders' is not uniformly mapped across partitions. Therefore - it is excluded from CDC
This leads me to conclude that non-clustered columnstore indexes are also not supported.
Regards,
Mohammed
Hi @MoeE ,
Clustered columnstore indexes are not supported by either MS-REPLICATION or MS-CDC.
For nonclustered columnstore indexes, MS-CDC should work as expected. However, if you plan to use MS-REPLICATION, the table must also have a primary key defined.
Could you share the exact steps you reproduce the error?
Regards,
Desmond
Hi @DesmondWOO,
Thanks for the response I appreciate it. I did this in a SQL -> SQL job using MS-Replication, not MS-CDC. This was my create table statement:
CREATE TABLE sandbox.SalesOrders
(
OrderID INT IDENTITY(1,1) PRIMARY KEY,
CustomerID INT,
ProductID INT,
Quantity INT,
Price DECIMAL(10,2),
OrderDate DATE
);
This was my data population statement:
INSERT INTO sandbox.SalesOrders (CustomerID, ProductID, Quantity, Price, OrderDate)
VALUES
(101, 2001, 2, 19.99, '2024-01-01'),
(102, 2002, 1, 49.99, '2024-01-02'),
(101, 2003, 5, 9.99, '2024-01-03'),
(103, 2001, 3, 19.99, '2024-01-04'),
(104, 2004, 2, 29.99, '2024-01-05'),
(105, 2002, 1, 49.99, '2024-01-06');
Statement to add a non-clustered columnstore index:
CREATE NONCLUSTERED COLUMNSTORE INDEX NCCI_SalesOrders
ON sandbox.SalesOrders (CustomerID, ProductID, Quantity, Price, OrderDate);
Next, I ran a Qlik Replicate my SQL to SQL task in Full Load, Store Changes, and CDC mode. I changed the price of one of the rows on the source table. This caused the table to be suspended. I've attached the log file and task export. I'm using Qlik Replicate Nov 2023.
Regards,
Mohammed
Hi @MoeE ,
You warning message is about partition:
[SOURCE_CAPTURE ]W: Table 'sandbox.SalesOrders' is not uniformly mapped across partitions. Therefore - it is excluded from CDC
Please refer to the following article for more details:
Additionally, I ran the same script in my environment and did not encounter the issue. My Qlik Replicate version is v2025.11.0.285.
CREATE TABLE dbo.SalesOrders
(
OrderID INT IDENTITY(1,1) PRIMARY KEY,
CustomerID INT,
ProductID INT,
Quantity INT,
Price DECIMAL(10,2),
OrderDate DATE
);
INSERT INTO dbo.SalesOrders (CustomerID, ProductID, Quantity, Price, OrderDate)
VALUES
(101, 2001, 2, 19.99, '2024-01-01'),
(102, 2002, 1, 49.99, '2024-01-02'),
(101, 2003, 5, 9.99, '2024-01-03'),
(103, 2001, 3, 19.99, '2024-01-04'),
(104, 2004, 2, 29.99, '2024-01-05'),
(105, 2002, 1, 49.99, '2024-01-06');
CREATE NONCLUSTERED COLUMNSTORE INDEX NCCI_SalesOrders
ON dbo.SalesOrders (CustomerID, ProductID, Quantity, Price, OrderDate);
-- Then I started task (full load + CDC)
update dbo.SalesOrders set price=88.99 where CustomerID=101;
-- My task captured 2 change events
Regards,
Desmond