添加新列源表后,CDC表不工作(CDC table not working after adding

2019-08-17 01:16发布

两个新列被添加到我们的源表,而CDC还在桌子上启用。 我需要新列出现在CDC表,但不知道应该遵循这样做有什么程序? 我已经在桌子上禁用CDC,残疾人CDC对数据库,添加了新的列到cdc.captured_columns表,并启用CDC。 但现在我在CDC表没有得到数据!

有没有列添加到源表后,必须更新一些其他的CDC表? 这些都是系统表文件夹下的CDC表:

  • cdc.captured_columns <-----其中I添加的新列
  • cdc.change_tables
  • cdc.dbo_myTable_CT <------表,其中变化数据被捕获
  • cdc.ddl_history
  • cdc.index_columns
  • cdc.lsn_time_mapping
  • dbo.systranschemas

Answer 1:

我建议你阅读企业数据库中的跟踪修改 。 非常详细和深入。 在信息的其他有用的极端位,还有如:

而变更数据捕获启用DDL变化不受限制。 然而,他们可能会对如果列被添加或删除收集到的变化数据有一定的影响。 如果跟踪的列被删除,在捕获实例的所有其他一些项目将有NULL该列。 如果添加列,它会被捕获实例被忽略。 换句话说,在创建时捕获实例的形状被设置。

如果需要列的变化,有可能创造另一个捕获实例为一个表(最高每桌两个捕获实例),并允许更改数据的消费者迁移到新表模式

这是一个非常明智和深思熟虑的设计,考虑架构漂移(不是所有参与者都可以在真实的网络部署同步更新的模式)。 具有多分阶段的方法(DDL部署,捕捉新的CDC,升级用户,删除旧CDC捕获)是唯一可行的办法,你应该效仿。



文章来源: CDC table not working after adding new columns to the source table