次の方法で共有


sys.fn_cdc_increment_lsn (Transact-SQL)

適用対象: SQL サーバー

指定された LSN の直後のログ シーケンス番号 (LSN) を返します。

Transact-SQL 構文表記規則

構文

  
sys.fn_cdc_increment_lsn ( lsn_value )  

引数

lsn_value

LSN 値を指定します。 lsn_valuebinary(10)です。

返り値の種類

binary(10)

解説

関数によって返される LSN 値は常に指定された値より大きく、2 つの値の間に LSN 値は存在しません。

時間の経過に伴って変更データのストリームに体系的にクエリを実行するには、クエリで返される変更をバインドする新しいクエリ間隔を指定するたびに、クエリ関数呼び出しを定期的に繰り返します。 データが失われないことを保証するために、前のクエリの上限は、後続のクエリの下限を生成するためによく使用されます。 クエリ間隔は閉じた間隔であるため、新しい下限は前の上限より大きくする必要がありますが、この値と古い上限の間に LSN 値が変更されないように十分に小さくする必要があります。 この値を取得するには、関数 sys.fn_cdc_increment_lsn が使用されます。

アクセス許可

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

次の例では、前回のクエリ時に保存した上限を sys.fn_cdc_increment_lsn 変数に格納し、それを @save_to_lsn 関数に渡すことによって、変更データ キャプチャ クエリに使用する新しい下限値を取得しています。

USE AdventureWorks2022;  
GO  
DECLARE @from_lsn binary(10), @to_lsn binary(10), @save_to_lsn binary(10);  
SET @save_to_lsn = <previous_upper_bound_value>;  
SET @from_lsn = sys.fn_cdc_increment_lsn(@save_to_lsn);  
SET @to_lsn = sys.fn_cdc_get_max_lsn();  
SELECT * from cdc.fn_cdc_get_all_changes_HumanResources_Employee( @from_lsn, @to_lsn, 'all' );  
GO  

Note

指定された LSN 範囲が、 cdc.fn_cdc_get_all_changes_<capture_instance> または cdc.fn_cdc_get_net_changes_<capture_instance>を呼び出すときに適切でない場合は、エラー 313 が予期されます。 lsn_value パラメーターが最も低い LSN または最大 LSN の時間を超えている場合、これらの関数の実行はエラー 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or functionで返されます。 このエラーは、開発者が処理する必要があります。

参照