繁体   English   中英

如何从CDC删除列(在SQL Server中)

[英]How to remove columns from CDC (in SQL Server)

我已使用以下代码在表上启用了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'

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM