sys.fn_cdc_get_column_ordinal

当指定列出现在与指定的捕获实例关联的更改表中时返回该列的列序号。

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

语法

sys.fn_cdc_get_column_ordinal ( 'capture_instance','column_name')

参数

  • 'capture_instance'
    表示捕获实例的名称,在该实例中指定列被标识为已捕获列。capture_instance 的数据类型为 sysname。

  • 'column_name'
    表示要报告的列。column_name 的数据类型为 sysname。

返回类型

int

注释

此函数用于标识变更数据捕获更新掩码内的已捕获列的序号位置。在查询变更数据时,它主要与函数 sys.fn_cdc_is_bit_set 一起使用以从更新掩码中提取有关信息。

权限

要求对源表的所有已捕获列具有 SELECT 权限。如果对捕获实例指定了变更数据捕获组件的数据库角色,则同时需要具有该角色的成员身份。

示例

以下示例将获取 HumanResources_Employee 捕获实例更新掩码中的 VacationHours 列的序号位置。然后将在调用 sys.fn_cdc_is_bit_set 时使用该值以从返回的更新掩码中提取信息。

USE AdventureWorks;
GO
DECLARE @VacationHoursOrdinal int;
SET @VacationHoursOrdinal = 
sys.fn_cdc_get_column_ordinal ( 'HumanResources_Employee','VacationHours');
SELECT sys.fn_cdc_is_bit_set(@VacationHoursOrdinal, __$update_mask)
  as 'VacationHoursChanged', *
FROM cdc.fn_get_net_changes_HumanResources_Employee
    (@from_lsn, @to_lsn, 'all with mask');
GO