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 | 源表中的列 ID。 |
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 | 如果基于日期/时间,则列的精度;否则,为 NULL . |
注解
用于sys.sp_cdc_get_captured_columns
获取有关通过查询捕获实例查询函数cdc.fn_cdc_get_all_changes_<capture_instance>或cdc.fn_cdc_get_net_changes_<>capture_instance返回的捕获列的列信息。 在捕获实例的生命周期内,列名、ID 和位置保持不变。 当所跟踪表中的基础源列的数据类型发生更改时,只有列数据类型会更改。 添加到源表或从中删除的列对现有捕获实例的捕获列没有影响。
使用 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