2012-03-01 101 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字段。