Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
UPGRADE ADVISORY for Qlik Replicate 2024.5: Read More
cancel
Showing results for 
Search instead for 
Did you mean: 
dan_stroebel
Contributor II
Contributor II

How do I know data has changed?

I am using an Oracle DB as source endpoint and replicate into a Microsoft SQL Server 2019 target endpoint.

The documentation explicitly states that qlik replicate will not fire any triggers in the target DB.

How do I keep track of changes and react to new/changed data?

I need to process new data as soon as it is replicated into my target db, with minimum delay.

Labels (1)
1 Solution

Accepted Solutions
john_wang
Support
Support

Hello @dan_stroebel , copy @Megha_More ,

Thanks for your comments here!

While SQL Server is target endpoint and option "Use BCP for loading tables" in Advanced tab is enabled then there is a limitation:

This is not Replicate itself limitation but SQL Server database behavior: By default, triggers are not fired in BCP mode. Please try to turn off BCP mode and see if triggers are fired as expected.

BTW, The bulk copy program utility (BCP) is used to gain best load performance, turning it off may impact the performance. Feel free to let me know if you need anything further.

Best Regards,

John.

 

Help users find answers! Do not forget to mark a solution that worked for you! If already marked, give it a thumbs up!

View solution in original post

4 Replies
Megha_More
Partner - Creator
Partner - Creator

If you want to keep the track on changed data then you need to enable stored changes option which is available while creating a task. This option will create ct(control table) so that you can see the entry of changed data.

Also,  you can populate the new column with the timestamp of the time that the change was applied in the target.

datetime('now') returns Replicate host UTC time when the change was applied to the target.

datetime('now','localtime') returns Replicate host local time when change was applied to target.

 

dan_stroebel
Contributor II
Contributor II
Author

Thanks a lot. I don't want to track changes specifically.
I want to react if an INSERT inserts a new row in the target database so I can immediately transform it.
Usually, you would do this with an INSERT trigger on the table to immediately process the inserted row.
Sind replicated rows do not fire triggers, this i not an option.
Running a job every 10 seconds works, but is a very dissatisfyxing solution.

Megha_More
Partner - Creator
Partner - Creator

You can see the insert count on change processing tab .

As u mentioned running a job every 10 seconds works, then you can schedule that task.

Hope this will help.

john_wang
Support
Support

Hello @dan_stroebel , copy @Megha_More ,

Thanks for your comments here!

While SQL Server is target endpoint and option "Use BCP for loading tables" in Advanced tab is enabled then there is a limitation:

This is not Replicate itself limitation but SQL Server database behavior: By default, triggers are not fired in BCP mode. Please try to turn off BCP mode and see if triggers are fired as expected.

BTW, The bulk copy program utility (BCP) is used to gain best load performance, turning it off may impact the performance. Feel free to let me know if you need anything further.

Best Regards,

John.

 

Help users find answers! Do not forget to mark a solution that worked for you! If already marked, give it a thumbs up!