sys.fn_cdc_is_bit_set (Transact-SQL)

适用于SQL Server

指示捕获的列是否已更新,采用的方法是检查是否在提供的位掩码内设置了其序号位置。

Transact-SQL 语法约定

语法

  
sys.fn_cdc_is_bit_set ( position , update_mask )  

参数

position
掩码中要检查的序号位置。 位置int

update_mask
标识已更新列的掩码。 update_mask为 varbinary(128)。

返回类型

bit

注解

此函数通常用在变更数据查询中,指示列是否已更改。 在此方案中,函数 sys.fn_cdc_get_column_ordinal 在查询之前用于获取所需的列序号。 然后,sys.fn_cdc_is_bit_set应用于返回的每一行更改数据,在返回的结果集中提供特定于列的信息。

在确定返回的结果集的所有行的列是否已更改时,建议使用此函数而不是函数 sys.fn_cdc_has_column_changed

权限

要求 公共 角色具有成员身份。

示例

下例使用 sys.fn_cdc_is_bit_set 将“cdc.fn_cdc_get_all_changes_HR_Department”列置于查询函数 IsGroupNmUpdated 生成的结果集之前,调用此函数时使用预先计算好的列序号和 __$update_mask 的值作为参数。

USE AdventureWorks2022;  
GO  
DECLARE @from_lsn binary(10), @to_lsn binary(10), @GroupNm_ordinal int;  
SET @from_lsn = sys.fn_cdc_get_min_lsn('HR_Department');  
SET @to_lsn = sys.fn_cdc_get_max_lsn();  
SET @GroupNm_ordinal = sys.fn_cdc_get_column_ordinal('HR_Department','GroupName');  
  
SELECT sys.fn_cdc_is_bit_set(@GroupNm_ordinal,__$update_mask) as 'IsGroupNmUpdated', *  
FROM cdc.fn_cdc_get_all_changes_HR_Department( @from_lsn, @to_lsn, 'all')  
WHERE __$operation = 4;  
GO  

另请参阅

变更数据捕获函数 (Transact-SQL)
sys.fn_cdc_get_column_ordinal (Transact-SQL)
sys.fn_cdc_has_column_changed (Transact-SQL)
<cdc.fn_cdc_get_all_changes_capture_instance> (Transact-SQL)
<cdc.fn_cdc_get_net_changes_capture_instance> (Transact-SQL)
关于变更数据捕获 (SQL Server)