0

我使用下面的代码在表上启用了 CDC,默认情况下它包括所有列。还有另一种方法可以在指定列时在表上启用 CDC(代码如下)。但是,对我来说,为时已晚 - 鉴于我的 CDC 已经创建并包含所有列。如何从 CDC 监视列表中删除我不想要的列(我在元数据中到处搜索,但找不到任何东西):

-- The following enabled the CDC on a table:
EXECUTE sys.sp_cdc_enable_table 
            @source_schema = N'dbo',
            @source_name = N'TableName',
            @role_name = N'cdc_Admin',  
            @supports_net_changes = 1

-- Now all of the columns are included in the CDC. 

--Alternate (which is too late now given my CDC on table was already created/performed)
EXECUTE sys.sp_cdc_enable_table      
@source_schema = N'dbo'    , 
@source_name = N'Orders'    , 
@role_name = N'cdc_Admin'    , 
@captured_column_list = N'OrderID,CustomerAccount,Product,SalesPerson'
4

2 回答 2

2

CDC 允许您同时为给定表拥有最多两个处于活动状态的捕获实例(以适应基础表上的架构更改)。因此,为了迁移到您指定列的新捕获实例(就像您在第二次调用 时所做的那样),请为参数 insys.sp_cdc_enable_table提供一个值并迁移您的 ETL 作业以使用它。然后,一旦您确定没有任何东西在使用旧的捕获实例,再次使用为(这次是旧的)提供一个值来删除它。@capture_instancesys.sp_cdc_enable_tablesys.sp_cdc_disable_table@capture_instance

于 2015-05-04T14:15:41.983 回答
0

在 SSIS 中,我可以将 CDC 数据源上的 [CDC 处理模式] 设置为“带有更新掩码的网络”,然后查看更改了哪些列。

您可以暂存所有数据并使用更新掩码仅处理您想要保留的更改。

于 2015-04-30T19:57:24.413 回答