2

我正在将我的 SQL Server 2000 数据库升级到 SQL Server 2008 R2。我想利用变更数据捕获功能。我现有的应用程序具有类似的功能,但我使用的触发器和历史表带有Hst_前缀,其架构与原始表几乎相似。

我的问题是:有没有办法将我的数据从Hst_表迁移到 CDC 功能使用的表?

我正在考虑这样做:

  • 我有桌子Cases
  • 我正在使用我的自定义历史记录机制,所以我也有三个触发器(插入、更新和删除)和一个双表Hst_Cases
  • 现在我在桌子上启用 CDCCases
  • CDC 创建函数,该函数返回历史数据 ( fn_cdc_get_all_changes_dbo_Cases) 以及一个实际保存数据 ( cdc.dbo_Cases_CT) 的系统表。
  • Hst_Cases我可以从to插入数据cdc.dbo_Cases_CT,但我有以下问题:
    • 我不知道如何获得__$start_lsn__$seqval
    • 很难弄清楚__$update_mask(我必须比较每两行)。

有没有唯一的方法可以做到这一点?我想避免这种情况,然后将“新”历史数据与Hst_表中的“旧”历史数据连接起来。

谢谢!

4

1 回答 1

1

您通常不想使用捕获表来存储长期更改数据,最好让 SSIS 包将捕获数据移动到永久表中。如果您确实使用它们,我认为如果您必须还原数据库,除非您在还原时使用 KEEP_CDC 选项,否则它们在还原后将为空。您还需要禁用自动清除捕获表的作业。

如果您创建自己的存储表,则可以省略 lsn 和 mask 字段。

于 2012-03-01T12:33:59.770 回答