如何将更改跟踪清除到特定版本?

时间:2016-10-04 20:27:41

标签: sql-server tsql change-tracking

我正在使用变更跟踪技术来同步两个不同的数据库A和B.

如果在A中有任何改变,我可以识别这些变化并将其发送给B.我也在DWH中使用自己的元表,其中存储了一些关于上次同步的最后使用的CT版本的重要信息。 / p>

存在一个问题,默认保留期限设置为2天,auto_cleanup设置为ON。这意味着在2天之后,如果在同步期间出现任何硬件问题的时间超过这2天,我将失去一些更改。当然我可以将保留期设置为更长的时间,但是它不会完全解决(如果我将X天的保留期限设置为,那么可能存在比这X天更长的HW问题。)

最好将auto_cleanup设置为OFF并在每次同步后清除它。所以我的问题是:

  

“是否有任何方法可以部分手动清除更改跟踪 - 直到某个特定版本?”

例如:

我将同步从A到B的联系人,其中CHANGE_TRACKING_CURRENT_VERSION()将是4562.我会将其存储到我的元表并运行我的手动清理函数MY_MANUAL_CLEANUP_FUNCTION(4562),它清除CT_ID小于的所有行4562. CHANGE_TRACKING_MIN_VALID_VERSION ( Contacts )将返回4562。

提前感谢任何评论!

0 个答案:

没有答案