Compartir a través de


sys.fn_cdc_get_min_lsn (Transact-SQL)

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

Icono de vínculo a temas Convenciones 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 de tipo sysname.

Tipos de valor devuelto

binary(10)

Comentarios

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.

Permisos

Necesita la pertenencia al rol fijo de servidor sysadmin o al rol fijo 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 ha definido un rol de acceso para la instancia de captura, la pertenencia a ese rol 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 AdventureWorks2012.

USE AdventureWorks2-12;
GO
SELECT sys.fn_cdc_get_min_lsn ('HumanResources_Employee')AS min_lsn;

B.Comprobar el extremo inferior de un rango de 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 AdventureWorks2012;
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

Vea también

Referencia

sys.fn_cdc_get_max_lsn (Transact-SQL)

Conceptos

El registro de transacciones (SQL Server)