Share via


sys.fn_cdc_increment_lsn (Transact-SQL)

Se aplica a:SQL Server

Devuelve el número de secuencia de registro (LSN) siguiente de la secuencia basándose en el LSN especificado.

Convenciones de sintaxis de Transact-SQL

Sintaxis

  
sys.fn_cdc_increment_lsn ( lsn_value )  

Argumentos

lsn_value

Valor de LSN. lsn_value es binary(10).

Tipo de valor devuelto

binary(10)

Comentarios

El valor LSN devuelto por la función siempre es mayor que el valor especificado y no existe ningún valor LSN entre los dos valores.

Para consultar sistemáticamente un flujo de datos de cambio durante un periodo de tiempo, puede repetir periódicamente la llamada de función de la consulta, especificando cada vez un nuevo intervalo de la consulta para limitar los cambios devueltos en la misma. Para ayudar a asegurarse de que no se pierden datos, el límite superior de la consulta anterior se utiliza a menudo para generar el límite inferior de la consulta subsiguiente. Dado que el intervalo de la consulta es cerrado, el nuevo límite inferior debe ser mayor que el límite superior anterior, pero lo suficientemente pequeño para asegurarse de que ningún cambio contiene valores LSN comprendidos entre este valor y el límite superior anterior. La función sys.fn_cdc_increment_lsn se usa para obtener este valor.

Permisos

Requiere la pertenencia al rol de base de datos pública .

Ejemplos

En el ejemplo siguiente se utiliza sys.fn_cdc_increment_lsn para generar un nuevo valor de límite inferior para una consulta de captura de datos modificados basado en el límite superior guardado de una consulta anterior y guardado en la variable @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  

Nota

Se espera el error 313 si el intervalo LSN proporcionado no es adecuado al llamar a cdc.fn_cdc_get_all_changes_<capture_instance> o cdc.fn_cdc_get_net_changes_<capture_instance>. Si el lsn_value parámetro está fuera del tiempo de LSN más bajo o LSN más alto, la ejecución de estas funciones devolverá el error 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. El desarrollador debe controlar este error. Puede encontrar un ejemplo de T-SQL para una solución alternativa en ReplTalk en GitHub.

Consulte también