次の方法で共有


sys.fn_cdc_is_bit_set (Transact-SQL)

適用対象: SQL Server

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

Transact-SQL 構文表記規則

構文

  
sys.fn_cdc_is_bit_set ( position , update_mask )  

引数

position
チェックするマスク内の序数の位置を指定します。 positionint です。

update_mask
更新された列を識別するマスクです。 update_maskvarbinary(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 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)