sys.sp_cdc_get_captured_columns (Transact-SQL)

返回指定捕获实例所跟踪的捕获源列的变更数据捕获元数据信息。变更数据捕获仅在 SQL Server 2008 Enterprise Edition、Developer Edition 和 Evaluation Edition 中可用。

主题链接图标Transact-SQL 语法约定

语法

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