2015-06-22 95 views
0

我无法找到任何方式在客户端更新后手动对更改跟踪表执行清理。这似乎是SQL Server中更改跟踪的主要限制,除非我错过了一些东西。手动删除SQL Server中的更改跟踪记录

也许我忽略了一些东西,但是我试图完成的是客户端成功从SQL Server更新以删除更改表中的更改记录之后。他们在那个时候不需要。

我知道的唯一配置是2天的保留期......等等。因为不同的客户/人会以不同的时间间隔进行同步,所以似乎我的唯一选择是设置非常大的保留期:例如365天。但是这样做会导致一旦所有的客户端都被更新就无法清除。

这样好像唯一的解决办法是手动创建触发器和维护我自己删除表,更新表等

有没有人找到一个更好的办法来管理这个,而不是简单地不使用更改跟踪功能实施?

回答

1

将您的保留期限设置为合理且功能正常的时间长度。如果客户端尝试使用过期版本进行同步(小于sys.change_tracking_tables中的min_valid_version),则它必须重新同步整个表。希望你没有太多的客户等待几个月来同步。如果是这样......至少他们不会经常这样做。

+0

是的,我猜只要客户端在完整下载之前发送更改,这可能是可以接受的。我只是希望对这个配置有更多的控制权。 – frigon

1

没有完美的解决方案,但对于空间密集型服务器,我放弃了表并从副本重新创建,然后重新启用了更改跟踪。这删除了该表的所有更改跟踪记录。作为定期维护的一部分,我做了这个。

我已经使用sys.sp_cdc_disable_db在maint中禁用更改跟踪以简化此过程。

在此方法之前,我有自己的跟踪系统实施。但是,通过复制,远程和故障转移服务器问题,跟踪所有这些更改变得非常复杂。特别是如果有人实现了自动恢复功能,这是一种痛苦。开销不值得。

希望这会有所帮助。

+0

谢谢...是的,我不想有自举的开销。 – frigon