Partilhar via


sys.fn_cdc_get_min_lsn (Transact-SQL)

Retorna o valor da coluna start_lsn para a instância de captura especificada na tabela do sistema cdc.change_tables. Esse valor representa o ponto de extremidade inferior do intervalo de validade da instância de captura.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sys.fn_cdc_get_min_lsn ( 'capture_instance_name' )

Argumentos

  • 'capture_instance_name'
    É o nome da instância de captura. capture_instance_name é sysname.

Tipos de retorno

binary(10)

Comentários

Retorna 0x00000000000000000000 quando a instância de captura não existe ou quando o chamador não está autorizado a acessar os dados de alteração associados a uma instância de captura.

Essa função é usada normalmente para identificar o ponto de extremidade inferior da linha do tempo do Change Data Capture associado à instância de captura. Você também pode usar essa função para validar os pontos de extremidade de um intervalo de consulta que estejam dentro da linha de tempo da instância de captura antes de solicitar dados de alteração. É importante executar essas verificações porque o ponto de extremidade inferior da instância de captura é alterado quando a limpeza é executada nas tabelas de alteração. Se o período entre as solicitações de dados de alteração for significativo, mesmo um ponto de extremidade inferior que seja definido para o ponto de extremidade superior da solicitação de dados de alteração anterior poderá ficar fora da linha do tempo atual. Para obter mais informações sobre linha do tempo do Change Data Capture, consulte Configurando o Change Data Capture.

Permissões

Requer associação na função de servidor fixa sysadmin ou na função de banco de dados fixa db_owner. Para todos os outros usuários, requer uma permissão SELECT em todas as colunas capturadas na tabela de origem e, se a função associada para a instância de captura tiver sido definida, a associação nessa função de banco de dados.

Exemplos

A. Retornando o valor LSN mínimo para uma instância de captura especificada

O exemplo a seguir retorna o valor LSN mínimo da instância de captura HumanResources_Employee no banco de dados AdventureWorks.

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

B. Verificando o ponto de extremidade inferior de um intervalo de consultas

O exemplo a seguir usa o valor LSN mínimo retornado por sys.fn_cdc_get_min_lsn para verificar se o ponto de extremidade inferior proposto para uma consulta de dados de alteração é válido para a linha do tempo atual de HumanResources_Employee da instância de captura. Esse exemplo assume que o LSN do ponto de extremidade superior anterior da instância de captura foi salvo e está disponível para definir a variável @save\_to\_lsn. Para a finalidade desse exemplo, @save\_to\_lsn é definido como 0x000000000000000000 para forçar a execução da seção de tratamento de erros.

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