2012-03-01 100 views
2

我正在將SQL Server 2000數據庫升級到SQL Server 2008 R2。我想要使​​用更改數據捕獲功能。我現有的應用程序我有類似的功能,但我使用觸發器和歷史表與Hst_前綴與原始表幾乎相似的架構。更改數據捕獲 - 歷史數據的初始加載

我的問題是:有沒有辦法將我的數據從Hst_表遷移到CDC功能使用的表?

我想這樣做,像這樣的:

  • 我有表Cases
  • 我使用我的自定義歷史機制,所以我也有三個觸發器(插入,更新和刪除)和一個雙表Hst_Cases
  • 現在我對錶啓用CDC Cases
  • CDC創建函數,該函數返回的歷史數據(fn_cdc_get_all_changes_dbo_Cases),也是一個系統表,其實際持有的數據(cdc.dbo_Cases_CT)。
  • 我可以插入數據從Hst_Casescdc.dbo_Cases_CT,但我有以下問題:
    • 我不知道怎麼去__$start_lsn__$seqval
    • 很難弄清楚__$update_mask(我必須比較每兩行)。

是否有這樣做的唯一途徑?我想避免這種情況,然後我使用Hst_表中的「舊」歷史數據加入「新」歷史數據。

謝謝!

回答

1

您通常不希望使用捕獲表來存儲長期更改數據,最好讓SSIS包將捕獲數據移動到permananent表。如果您確實使用了它們,我認爲如果您需要恢復數據庫,那麼恢復後它們將爲空,除非在恢復時使用KEEP_CDC選項。您還需要禁用自動清除捕獲表的作業。

如果您創建自己的表進行存儲,則可以省略lsn和mask字段。