sys.sp_cdc_help_change_data_capture (Transact-SQL)

適用於:SQL Server

傳回針對目前資料庫中針對異動數據擷取啟用之每個數據表的異動數據擷取組態。 每個源數據表最多可以傳回兩個數據列,每個擷取實例各一個數據列。 變更數據擷取不適用於每個 SQL Server 版本。 如需 SQL Server 版本支援的功能清單,請參閱 SQL Server 2022 的版本和支援功能

Transact-SQL 語法慣例

語法

sys.sp_cdc_help_change_data_capture
    [ [ @source_schema = ] 'source_schema' ]
    [ , [ @source_name = ] 'source_name' ]
[ ; ]

引數

[ @source_schema = ] 'source_schema'

源數據表所屬之架構的名稱。 @source_schema為 sysname,預設值為 NULL。 指定@source_schema也必須指定@source_name

如果非 Null, @source_schema 必須存在於目前的資料庫中。

如果 @source_schema 為非 Null, @source_name 也必須為非 Null。

[ @source_name = ] 'source_name'

來源資料表的名稱。 @source_name為 sysname,預設值為 NULL。 指定@source_name也必須指定@source_schema

如果非 Null, @source_name 必須存在於目前資料庫中。

如果 @source_name 為非 Null, @source_schema 也必須是非 Null。

傳回碼值

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

結果集

資料行名稱 資料類型 描述
source_schema sysname 源數據表架構的名稱。
source_table sysname 源數據表的名稱。
capture_instance sysname 擷取實例的名稱。
object_id int 與源數據表相關聯的變更數據表標識碼。
source_object_id int 源數據表的標識碼。
start_lsn binary(10) 記錄序號 (LSN) 代表查詢變更數據表的低端點。

NULL = 尚未建立低端點。
end_lsn binary(10) LSN 代表查詢變更數據表的高端點。 在 SQL Server 2012 (11.x) 中,此數據行一律為 NULL。
supports_net_changes bit 已啟用凈變更支援。
has_drop_pending bit SQL Server 2012 (11.x) 中未使用。
role_name sysname 用來控制變更數據存取權的資料庫角色名稱。

NULL = 未使用角色。
index_name sysname 用來唯一識別源數據表中數據列的索引名稱。
filegroup_name sysname 變更數據表所在的檔案群組名稱。

NULL = 變更數據表位於資料庫的預設檔案群組中。
create_date datetime 啟用擷取實例的日期。
index_column_list nvarchar(max) 用來唯一識別源數據表中數據列的索引數據行清單。
captured_column_list nvarchar(max) 擷取的源數據行清單。

備註

當@source_schema@source_name預設為 NULL,或明確設定 NULL 時,這個預存程式會傳回呼叫者具有 SELECT 存取權之所有資料庫擷取實例的資訊。 當@source_schema@source_name為非 Null 時,只會傳回特定具名已啟用數據表的資訊。

權限

當@source_schema@source_name為 NULL 時,呼叫端的授權會決定結果集中包含哪些已啟用的數據表。 呼叫端必須具有擷取實例之所有擷取數據行的SELECT許可權,以及包含數據表資訊之任何已定義之設定角色的成員資格。

db_owner資料庫角色的成員可以檢視所有已定義擷取實例的相關信息。 要求特定已啟用數據表的資訊時,會針對具名數據表套用相同的SELECT和成員資格準則。

範例

A. 傳回指定數據表的異動數據擷取組態資訊

下列範例會傳回數據表的 HumanResources.Employee 異動數據擷取組態。

USE AdventureWorks2022;
GO

EXECUTE sys.sp_cdc_help_change_data_capture
    @source_schema = N'HumanResources',
    @source_name = N'Employee';
GO

B. 傳回所有數據表的異動數據擷取組態資訊

下列範例會傳回資料庫中所有已啟用之數據表的組態資訊,其中包含呼叫端有權存取的變更數據。

USE AdventureWorks2022;
GO

EXECUTE sys.sp_cdc_help_change_data_capture;
GO