gpt4 book ai didi

sql - 如何在不禁用 CDC 的情况下在基础表的新添加列上激活变更数据捕获 (CDC)

转载 作者:行者123 更新时间:2023-12-04 18:30:27 25 4
gpt4 key购买 nike

我有一个要求,我想在新添加的表列上启用 CDC,但我无法禁用 CDC 并再次启用它。有什么办法可以实现这一目标吗?

我找到了一个解决方案,我可以将旧的 CDC 表值复制到临时表中,然后禁用 CDC,然后使用新表架构启用 CDC。稍后将临时表值复制到新的 CDC 表并更新 LSN 值。

我需要一个解决方案,在启用 CDC 的同时将新列包含到 CDC 表中,而不是上述解决方案。

最佳答案

CDC 支持捕获表的两个实例。因此,您可以执行以下步骤:

  • 添加新栏目
  • 添加新的 cdc-capture inctance
  • 将数据从旧表移到新表
  • 禁用旧的 cdc 实例

  • 此解决方案可防止您停止收集更改,并且不会丢失数据。
    EXEC sp_cdc_enable_table
    @source_schema = N'common',
    @source_name = N'EntityTypes',
    @role_name = NULL,
    @filegroup_name = N'CDC',
    @capture_instance = 'common_EntityTypes'


    ALTER TABLE common.EntityTypes
    ADD TestColumn int

    EXEC sp_cdc_enable_table
    @source_schema = N'common',
    @source_name = N'EntityTypes',
    @role_name = NULL,
    @filegroup_name = N'CDC',
    @capture_instance = 'common_EntityTypes2'

    INSERT INTO cdc.common_EntityTypes2_CT
    (__$start_lsn, __$end_lsn,__$seqval,__$operation,__$update_mask,Id,Name)
    SELECT
    __$start_lsn,
    __$end_lsn,
    __$seqval,
    __$operation,
    __$update_mask,
    Id,
    Name
    FROM cdc.common_EntityTypes_CT

    EXEC sp_cdc_disable_table
    @source_schema = N'common',
    @source_name = N'EntityTypes',
    @capture_instance = 'common_EntityTypes'

    关于sql - 如何在不禁用 CDC 的情况下在基础表的新添加列上激活变更数据捕获 (CDC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38587045/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com