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 では、特定のテーブルに対して同時に最大 2 つのキャプチャ インスタンスをアクティブにすることができます (基になるテーブルのスキーマ変更に対応するため)。そのため、列を指定する新しいキャプチャ インスタンスに移行するには (2 回目の への呼び出しで行うようにsys.sp_cdc_enable_table)、@capture_instanceパラメーターの値を指定しsys.sp_cdc_enable_table、ETL ジョブを移行してそれを使用します。次に、古いキャプチャ インスタンスが何も使用されていないことを確認したら、sys.sp_cdc_disable_table再度値を指定して削除します@capture_instance(今回は古いもの)。

于 2015-05-04T14:15:41.983 に答える
0

SSIS では、CDC データ ソースの [CDC 処理モード] を [Net with Update Mask] に設定し、どの列が変更されたかを確認できます。

すべてのデータをステージングし、更新マスクを使用して、保持したい変更のみを処理できます。

于 2015-04-30T19:57:24.413 に答える