适用范围:SQL Server
返回当前数据库中为变更数据捕获启用的每个表的变更数据捕获配置。 最多可为每个源表返回两行,为每个捕获实例返回一行。 更改数据捕获在 SQL Server 的每个版本中都不可用。 有关 SQL Server 各个版次支持的功能列表,请参阅 SQL Server 2022 的各个版次及其支持的功能。
语法
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 | 与源表关联的更改表的 ID。 | 
| source_object_id | int | 源表的 ID。 | 
| 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时,此存储过程将返回调用方有权访问的所有数据库捕获实例的信息。 当@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