sys.fn_cdc_increment_lsn (Transact-SQL)

適用対象:SQL Server

指定された 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 は、この値を取得するために使用されます。

アクセス許可

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

次の例では、前回のクエリ時に保存した上限を 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

または cdc.fn_cdc_get_net_changes_<capture_instance>を呼び出cdc.fn_cdc_get_all_changes_<capture_instance>すときに、指定された LSN 範囲が適切でない場合、エラー 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: で返されます。 このエラーは、開発者が処理する必要があります。 回避策の T-SQL のサンプルについては、 GitHub の ReplTalk を参照してください。

参照