Compartir a través de


sys.fn_cdc_get_min_lsn (Transact-SQL)

Devuelve el valor de columna start_lsn para la instancia de captura especificada de la tabla de sistema cdc.change_tables. Este valor representa el extremo inferior del intervalo de validez para la instancia de captura.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sys.fn_cdc_get_min_lsn ( 'capture_instance_name' )

Argumentos

  • 'capture_instance_name'
    Es el nombre de la instancia de captura. capture_instance_name es sysname.

Tipos de valor devueltos

binary(10)

Notas

Devuelve 0x00000000000000000000 cuando la instancia de captura no existe o cuando la persona que llama no está autorizada para tener acceso a los datos del cambio asociados con la instancia de captura.

Esta función se utiliza normalmente para identificar el extremo inferior de la escala de tiempo de captura de los datos del cambio asociada con una instancia de captura. También puede utilizar esta función para validar que los extremos de un intervalo de consultas se encuentran dentro de la escala de tiempo de la instancia de captura antes de solicitar los datos del cambio. Es importante realizar tales comprobaciones porque el extremo inferior de una instancia de captura cambia cuando el proceso de limpieza se realiza en las tablas de cambio. Si el tiempo transcurrido entre las solicitudes para los datos del cambio es significativo, incluso un extremo inferior que está establecido en el extremo alto de la solicitud de datos del cambio anterior podría quedar fuera de la escala de tiempo actual. Para obtener más información acerca de la escala de tiempo de captura de datos del cambio, vea Configuración del mecanismo de captura de datos modificados.

Permisos

Debe pertenecer a la función fija de servidor sysadmin o a la función fija de base de datos db_owner. Para el resto de usuarios, requiere el permiso SELECT en todas las columnas capturadas en la tabla de origen y, si se define una función de puerta de enlace para la instancia de captura, la pertenencia a esa función de base de datos.

Ejemplos

A. Devolver el valor LSN mínimo para una instancia de captura especificada

El ejemplo siguiente devuelve el valor LSN mínimo para la instancia de captura HumanResources_Employee en la base de datos AdventureWorks.

USE AdventureWorks;
GO
SELECT sys.fn_cdc_get_min_lsn ('HumanResources_Employee')AS min_lsn;

B. Comprobar el extremo inferior de un intervalo de la consulta

El ejemplo siguiente utiliza el valor LSN mínimo devuelto por sys.fn_cdc_get_min_lsn para comprobar que el extremo inferior propuesto para una consulta de datos de cambio es válido para la escala de tiempo actual para la instancia de captura el HumanResources_Employee. Este ejemplo supone que el LSN del extremo alto anterior para la instancia de captura se guardó y está disponible para establecer la variable @save\_to\_lsn. Para los propósitos de este ejemplo, @save\_to\_lsn está establecido en 0x000000000000000000 para forzar la ejecución de la sección de control de errores.

USE AdventureWorks;
GO
DECLARE @min_lsn binary(10), @from_lsn binary(10),@save_to_lsn binary(10), @to_lsn binary(10);
-- Sets @save_to_lsn to the previous high endpoint saved from the last change data request.
SET @save_to_lsn = 0x000000000000000000;
-- Sets the upper endpoint for the query range to the current maximum LSN.
SET @to_lsn = sys.fn_cdc_get_max_lsn();
-- Sets the @min_lsn parameter to the current minimum LSN for the capture instance.
SET @min_lsn = sys.fn_cdc_get_min_lsn ('HumanResources_Employee');
-- Sets the low endpoint for the query range to the LSN that follows the previous high endpoint.
SET @from_lsn = sys.fn_cdc_increment_lsn(@save_to_lsn);
-- Tests to verify the low endpoint is valid for the current capture instance.
IF (@from_lsn < @min_lsn)
    BEGIN
        RAISERROR('Low endpoint of the request interval is invalid.', 16, -1);
    END
ELSE
-- Return the changes occurring within the query range.
    SELECT * FROM cdc.fn_cdc_get_all_changes_HumanResources_Employee(@from_lsn, @to_lsn, 'all');
GO