次の方法で共有


sys.fn_cdc_is_bit_set (Transact-SQL)

序数位置が指定されたビットマスク内にあるかどうかを確認することで、キャプチャした列が更新されているかどうかを示します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sys.fn_cdc_is_bit_set ( position , update_mask )

引数

  • position
    確認するマスク内の序数位置を指定します。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 関数ではなくこの関数を使用することをお勧めします。

権限

public ロールのメンバシップが必要です。

次の例では、sys.fn_cdc_is_bit_set を使用して、クエリ関数 cdc.fn_cdc_get_all_changes_HR_Department によって生成された結果セットの前に列 'IsGroupNmUpdated' を付加します。このとき、事前計算済みの列序数と __$update_mask の値を呼び出しの引数として使用しています。

USE AdventureWorks;
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