sys.sp_cdc_get_captured_columns (Transact-SQL)
返回指定捕获实例所跟踪的捕获源列的变更数据捕获元数据信息。变更数据捕获仅在 SQL Server 2008 Enterprise Edition、Developer Edition 和 Evaluation Edition 中可用。
语法
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。 |
ordinal_position |
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(对象不存在或访问被拒绝。)。
示例
下例返回有关 HumanResources_Employee 捕获实例中的捕获列的信息。
USE AdventureWorks;
GO
EXECUTE sys.sp_cdc_get_captured_columns
@capture_instance = N'HumanResources_Employee';
GO