手动删除SQL Server中的更改跟踪记录

时间:2015-06-22 17:49:59

标签: sql-server change-tracking

在客户端更新后,我找不到任何手动在更改跟踪表上执行清理的方法。这似乎是SQL Server中更改跟踪的主要限制,除非我遗漏了一些内容。

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

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

因此,似乎唯一的解决方法是手动创建触发器并维护自己的删除表,更新表等。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

希望这有帮助。

答案 1 :(得分:1)

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