Sql-Server

在數據庫複製或 CDC 中斷時擷取更改增量

  • November 12, 2015

我工作的公司正在 Microsoft BI 堆棧上實施變更數據擷取,目的是擷取需要載入到數據倉庫中的增量變更。到目前為止,這對我們來說效果很好,我們在複製數據庫上為我們需要跟踪的特定表和列設置了數據庫複製設置和表級 CDC 設置。我們遇到的問題是複制和 CDC 都有可能中斷。發生這種情況時,從中斷到解決之間發生的任何更改都不會被擷取,因此無法傳遞到數據倉庫。

我想知道辨識所有增量並將它們載入到數據倉庫中的最佳做法是什麼?從理論上講,您可以重建整個數據倉庫,但是保存歷史類型 2 數據的最佳方法是什麼?

假設有一個嚴重的故障導致您需要“重建”失去的類型 2 更改,您可能能夠使用您的源數據庫數據和日誌備份。如果您保留了這些備份,您可以執行類似以下流程大綱的操作:

  1. 將源數據庫的副本還原到您遇到故障之前的某個時間點。命名數據庫**$$ dbnameEmergency $$**.
  2. 將日誌增量還原到**$$ dbnameEmergency $$**,例如 1 分鐘、5 分鐘、30 分鐘,具體取決於您希望處理增量的精細程度以減少損壞。
  3. 讀取和比較增量恢復將需要創建快照(如果您有企業版),或者將日誌恢復到 STANDBY 模式以讀取數據。
  4. 比較最新的可讀變化**$$ dbnameEmergency $$反對國家$$ dbnameReplica $$(這是您嘗試直接設置的數據庫)並編寫程式碼以應用您能夠推斷出的更改$$ dbnameReplica $$**.

注意:如果您的數據庫使用的是rowversion(或時間戳)列,那麼查找更改的行會更簡單。

這不是一個完美的過程,無疑會遺漏一些細節。但它會給你一種方法來幫助你彌補損失。

話雖如此:由您決定這個過程是否值得努力。

引用自:https://dba.stackexchange.com/questions/116075