共用方式為


sys.sp_cdc_get_captured_columns (Transact-SQL)

適用於:SQL Server

傳回所指定擷取實例所追蹤之所擷取源數據行的異動數據擷取元數據資訊。 變更數據擷取不適用於每個 SQL Server 版本。 如需 SQL Server 版本支援的功能清單,請參閱 SQL Server 2022 的版本和支援功能

Transact-SQL 語法慣例

語法

sys.sp_cdc_get_captured_columns
    [ @capture_instance = ] 'capture_instance'
[ ; ]

引數

[ @capture_instance = ] 'capture_instance'

與源數據表相關聯的擷取實例名稱。 @capture_instance為 sysname 且不能為 NULL。

若要報告數據表的擷取實例,請執行 sys.sp_cdc_help_change_data_capture 預存程式。

傳回碼值

0 (成功)或 1 (失敗)。

結果集

資料行名稱 資料類型 描述
source_schema sysname 源數據表架構的名稱。
source_table sysname 源數據表的名稱。
capture_instance sysname 擷取實例的名稱。
column_name sysname 擷取之源數據行的名稱。
column_id int 源數據表中數據行的識別碼。
column_ordinal int 源數據表內數據行的位置。
data_type sysname 數據行數據類型。
character_maximum_length int 字元型數據行的最大字元長度;否則為 NULL。
numeric_precision tinyint 如果以數值為基礎,則為數據行的有效位數;否則為 NULL。
numeric_precision_radix smallint 如果以數值為基礎,則為數據行的有效位數基數;否則為 NULL。
numeric_scale int 如果以數值為基礎,則為數據行的尺規;否則為 NULL。
datetime_precision smallint 如果以 datetime 為基礎,則為數據行的有效位數;否則為 NULL。

備註

使用 sys.sp_cdc_get_captured_columns 來取得擷取實例查詢函式cdc.fn_cdc_get_all_changes_<capture_instance或cdc.fn_cdc_get_net_changes_<所>傳回之擷取數據行的相關信息capture_instance>。 擷取實例存留期的數據行名稱、標識碼和位置會保持不變。 只有在追蹤數據表中基礎源數據行的數據類型變更時,數據行數據類型才會變更。 從源數據表加入或卸除的數據行,不會影響現有擷取實例的擷取數據行。

使用 sys.sp_cdc_get_ddl_history 取得套用至源數據表的數據定義語言 (DDL) 語句相關信息。 修改追蹤源數據行結構的任何 DDL 變更,會在結果集中傳回。

權限

需要 db_owner 固定資料庫角色中的成員資格。 對於所有其他使用者,需要源數據表中所有擷取數據行的SELECT許可權,如果已定義擷取實例的管制角色,該資料庫角色的成員資格。 當呼叫端沒有檢視源數據的許可權時,函式會傳回錯誤 22981 (Object doesn't exist or access is denied.)。

範例

下列範例會傳回擷取實例中 HumanResources_Employee 所擷取數據行的相關信息。

USE AdventureWorks2022;
GO

EXECUTE sys.sp_cdc_get_captured_columns
    @capture_instance = N'HumanResources_Employee';
GO