2015-06-22 143 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