CDC 來源
CDC 來源會從 SQL Server 2012 變更資料表中讀取變更資料的範圍,並將這些變更向下游傳遞至其他 SSIS 元件。
CDC 來源所讀取的變數資料範圍稱為 CDC 處理範圍,並且由目前資料流程啟動之前執行的 CDC 控制工作所決定。 CDC 處理範圍衍生自維護資料表群組之 CDC 處理狀態的封裝變數值。
CDC 來源會使用資料庫資料表、檢視或 SQL 陳述式,從 SQL Server 資料庫中擷取資料。
CDC 來源使用下列組態:
SQL Server ADO.NET 連接管理員,用以存取 SQL Server CDC 資料庫。 如需有關設定 CDC 來源連接的詳細資訊,請參閱<CDC 來源編輯器 (連接管理員頁面)>。
啟用 CDC 的資料表。
所選資料表的擷取執行個體名稱 (如果 more-than-one 存在)。
變更處理模式。
做為決定 CDC 處理範圍之依據的 CDC 狀態封裝變數名稱。 CDC 來源不會修改該變數。
CDC 來源傳回的資料與 SQL Server CDC 函數 cdc.fn_cdc_get_all_changes_<capture-instance-name> 或 cdc.fn_cdc_get_net_changes_<capture-instance-name> (如果有) 傳回的資料相同。 唯一的選擇性附加資料行是 __$initial_processing,表示目前處理範圍是否可與資料表的初始載入重疊。 如需有關初始處理的詳細資訊,請參閱<CDC 控制工作>。
CDC 來源有一個一般輸出和一個錯誤輸出。
錯誤處理
CDC 來源有錯誤輸出。 此元件的錯誤輸出包含下列輸出資料行:
錯誤碼:值一定是 -1。
錯誤資料行:造成錯誤 (用於轉換錯誤) 的來源資料行。
錯誤資料列資料行:造成錯誤的記錄資料。
根據錯誤行為設定,CDC 來源支援在錯誤輸出中傳回擷取程序期間發生的錯誤 (資料轉換、截斷)。 如需詳細資訊,請參閱<CDC 來源編輯器 (錯誤輸出頁面)>。
資料類型支援
Microsoft 的 CDC 來源元件支援所有 SQL Server 資料類型,這些資料類型都會對應至正確的 SSIS 資料類型。
CDC 來源的疑難排解
以下包含 CDC 來源的疑難排解資訊。
使用此指令碼來隔離問題,並在 SQL Server Management Studio 中重現問題。
CDC 來源作業是由叫用 CDC 來源之前執行的 CDC 控制工作作業所控制。 CDC 控制工作會準備 CDC 狀態封裝變數的值,以包含開始和結束 LSN。 它所執行的功能相當於下列指令碼:
use <cdc-enabled-database-name>
declare @start_lsn binary(10), @end_lsn binary(10)
set @start_lsn = sys.fn_cdc_increment_lsn(
convert(binary(10),'0x' + '<value-from-state-cs>', 1))
set @end_lsn =
convert(binary(10),'0x' + '<value-from-state-ce>', 1)
select * from cdc.fn_cdc_get_net_changes_dbo_Table1(@start_lsn,
@end_lsn, '<mode>')
其中:
<cdc-enabled-database-name> 是包含變更資料表的 SQL Server 資料庫名稱。
<value-from-state-cs> 是在 CDC 狀態變數中顯示為 CS/<value-from-state-cs>/ 的值 (CS 代表 Current-processing-range-Start)。
<value-from-state-ce> 是在 CDC 狀態變數中顯示為 CE/<value-from-state-cs>/ 的值 (CE 代表 Current-processing-range-End)。
<mode> 是 CDC 處理模式。 處理模式有下列其中一個值:[全部]、[全部 (含舊值)]、[淨]、[淨 (含更新遮罩)]、[淨 (含合併)]。
此指令碼會在 SQL Server Management Studio 中重現問題,協助您輕鬆重現及識別錯誤以隔離問題。
SQL Server 錯誤訊息
SQL Server 可能會傳回下列訊息:
提供給程序或函數 cdc.fn_cdc_get_net_changes_<..> 的引數數量不足。
此錯誤並不表示缺少引數。 它表示 CDC 狀態變數中的開始或結束 LSN 值無效。
設定 CDC 來源
您可以透過程式設計方式或 SSIS 設計師來設定 CDC 來源。
如需詳細資訊,請參閱下列其中一個主題:
[進階編輯器] 對話方塊包含可以程式設計方式設定的屬性。
若要開啟 [進階編輯器] 對話方塊:
- 在 SQL Server 2012 Integration Services (SSIS) 專案的 [資料流程] 畫面中,以滑鼠右鍵按一下 CDC 來源,然後選取 [顯示進階編輯器]。
如需有關可在 [進階編輯器] 對話方塊中設定之屬性的詳細資訊,請參閱<CDC 來源自訂屬性>。
本節內容
相關內容
- mattmasson.com 上的部落格文章:CDC 來源的處理模式。