如何删除从CDC列(在SQL Server)(How to remove columns from

2019-11-03 18:24发布

我已经启用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'

Answer 1:

CDC可以让你在同一时间主动给定表最多两个捕获实例(以适应基础表的架构更改)。 因此,为了迁移到新捕获实例,您指定的列(如你在你的第二个电话做sys.sp_cdc_enable_table ),请提供一个值@capture_instance参数sys.sp_cdc_enable_table和迁移ETL作业使用它。 然后,一旦你确信没有什么是使用旧捕获实例,放弃它使用sys.sp_cdc_disable_table再次提供一个值@capture_instance (此时,老一)。



Answer 2:

在SSIS我可以设置CDC的数据源,以“网与更新掩码”中的[CDC处理模式]然后看看发生了变化哪些列。

你可以阶段的所有数据,并使用更新面具只处理要保留更改。



文章来源: How to remove columns from CDC (in SQL Server)