次の方法で共有


sys.fn_cdc_get_column_ordinal (Transact-SQL)

適用対象: SQL Server

指定したキャプチャ インスタンスに関連付けられた change テーブルに表示される、指定した列の序数 返します。

Transact-SQL 構文表記規則

構文

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

引数

' capture_instance '
指定した列がキャプチャ列として識別されるキャプチャ インスタンスの名前です。 capture_instancesysname です。

' column_name '
レポートする列を指定します。 column_namesysname です。

戻り値の型

int

解説

この関数は、変更データ キャプチャ更新マスク内のキャプチャされた列の序数位置を識別するために使用されます。 これは主に、変更データのクエリを実行するときに更新マスクから情報を抽出するために、関数 sys.fn_cdc_is_bit_set と組み合わせて使用されます。

アクセス許可

ソース テーブルのすべてのキャプチャ列に対する SELECT 権限が必要です。 変更データ キャプチャ コンポーネントのデータベース ロールがキャプチャ インスタンスに指定されている場合は、そのロールのメンバーシップも必要です。

次の例では、VacationHours キャプチャ インスタンスの更新マスク内の、HumanResources_Employee 列の序数位置を取得します。 さらに、この値を sys.fn_cdc_is_bit_set 関数の中で使用し、返された更新マスクから情報を抽出します。

USE AdventureWorks2022;  
GO  
DECLARE @from_lsn binary(10), @to_lsn binary(10),  @VacationHoursOrdinal int;  
SET @from_lsn = sys.fn_cdc_get_min_lsn('HumanResources_Employee');  
SET @to_lsn = sys.fn_cdc_get_max_lsn();  
SET @VacationHoursOrdinal = sys.fn_cdc_get_column_ordinal   
    ( 'HumanResources_Employee','VacationHours');  
SELECT *, sys.fn_cdc_is_bit_set(@VacationHoursOrdinal,  
    __$update_mask) as 'VacationHours'  
FROM cdc.fn_cdc_get_net_changes_HumanResources_Employee  
    ( @from_lsn, @to_lsn, 'all with mask');  
GO  

参照

変更データ キャプチャの関数 (Transact-SQL)
変更データ キャプチャについて (SQL Server)
sys.sp_cdc_help_change_data_capture (Transact-SQL)
sys.sp_cdc_get_captured_columns (Transact-SQL)
sys.fn_cdc_is_bit_set (Transact-SQL)