sys.sp_cdc_get_captured_columns (Transact-SQL)
適用於:SQL Server
傳回所指定擷取實例所追蹤之所擷取源數據行的異動數據擷取元數據資訊。 變更數據擷取不適用於每個 SQL Server 版本。 如需 SQL Server 版本支援的功能清單,請參閱 SQL Server 2022 的版本和支援功能。
語法
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