Compartilhar via


cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)

Retorna uma linha para cada alteração aplicada à tabela de origem dentro do intervalo LSN (número de sequência de log) especificado. Se uma linha de origem tiver passado por várias alterações durante o intervalo, todas as alterações serão representadas no conjunto de resultados retornado. Além de retornar os dados de alteração, quatro colunas de metadados fornecem as informações necessárias para a aplicação de alterações em outra fonte de dados. As opções de filtragem de linha regem o conteúdo das colunas de metadados, bem como as linhas retornadas no conjunto de resultados. Quando a opção de filtragem de linha 'all' é especificada, cada alteração tem exatamente uma linha para identificar a alteração. Quando a opção 'all update old' é especificada, as operações de atualização são representadas como duas linhas: uma contendo os valores das colunas capturadas antes da atualização e outra contendo os valores das colunas capturadas após a atualização.

Essa função de enumeração é criada no momento em que uma tabela de origem é habilitada para change data capture. O nome da função é derivado e utiliza o formato **cdc.fn_cdc_get_all_changes_**capture_instance, em que capture_instance é o valor especificado para a instância de captura quando a tabela de origem é habilitada para change data capture.

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

Sintaxe

cdc.fn_cdc_get_all_changes_capture_instance ( from_lsn , to_lsn , '<row_filter_option>' )

<row_filter_option> ::=
{ all
 | all update old
}

Argumentos

  • from_lsn
    Valor LSN que representa o ponto de extremidade inferior do intervalo LSN a ser incluído no conjunto de resultados. from_lsn é binary(10).

    Apenas as linhas da tabela de alteração cdc.[capture_instance]_CT com um valor em __$start_lsn maior do que ou igual a from_lsn são incluídas no conjunto de resultados.

  • to_lsn
    Valor LSN que representa o ponto de extremidade superior do intervalo LSN a ser incluído no conjunto de resultados to_lsn é binary(10).

    Apenas linhas na tabela de alteração cdc. [capture_instance] _CT com um valor em __$start_lsn menor ou igual a from_lsn ou igual a to_lsn são incluídas no conjunto de resultados.

  • <row_filter_option> ::= { all | all update old }
    Opção que rege o conteúdo das colunas de metadados, assim como as linhas retornadas no conjunto de resultados.

    Pode ser uma das seguintes opções:

    • all
      Retorna todas as alterações do intervalo LSN especificado. Para alterações relativas a uma operação de atualização, essa opção retorna apenas a linha que contém os novos valores após a aplicação da atualização.

    • all update old
      Retorna todas as alterações do intervalo LSN especificado. Com relação às alterações relativas a uma operação de atualização, essa opção retorna tanto a linha que contém os valores da coluna antes da atualização como a linha que contém os valores da coluna após a atualização.

Tabela retornada

Nome da coluna

Tipo de dados

Descrição

__$start_lsn

binary(10)

LSN de confirmação associado à alteração que preserva a ordem de confirmação da alteração. Alterações confirmadas na mesma transação compartilham o mesmo valor LSN de confirmação.

__$seqval

binary(10)

Valor de sequência usado para solicitar alterações em uma linha dentro de uma transação.

__$operation

int

Identifica a operação DML (linguagem de manipulação de dados) necessária para aplicar a linha de dados de alteração à fonte de dados de destino. Pode ser uma destas opções:

1 = delete

2 = insert

3 = atualizar (valores da coluna capturados são os valores anteriores à operação de atualização). Esse valor se aplica somente quando a opção de filtro de linha 'all update old' for especificada.

4 = atualizar (valores de coluna capturados são os valores após a operação de atualização)

__$update_mask

varbinary(128)

Uma máscara de bits com um bit correspondente para cada coluna capturada identificada para a instância de captura. Esse valor tem todos os bits definidos configurados como 1 quando __$operation = 1 ou 2. Quando __$operation = 3 ou 4, apenas os bits correspondentes às colunas que foram alteradas são configurados como 1.

<colunas da tabela de origem capturadas>

variam

As colunas restantes retornadas pela função são as colunas capturadas identificadas quando a instância de captura foi criada. Se nenhuma coluna tiver sido especificada na lista de colunas capturadas, todas as colunas da tabela de origem serão retornadas.

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 a permissão SELECT em todas as colunas capturadas na tabela de origem e, se uma função associada à instância de captura tiver sido definida, associação nessa função de banco de dados. Quando o chamador não tem permissão para exibir os dados de origem, a função retorna o erro 229 ("A permissão SELECT foi negada no objeto 'fn_cdc_get_all_changes_...', banco de dados '<DatabaseName>', esquema 'cdc'.").

Comentários

Se o intervalo de LSN especificado não estiver dentro da linha de tempo do controle de alterações, a função retornará o erro 208 ("Um número insuficiente de argumentos foi fornecido para o procedimento ou função cdc.fn_cdc_get_all_changes").

Às colunas de tipo de dados image, text e ntext é sempre atribuído um valor NULL quando __$operation = 1 ou __$operation = 3. Às colunas de tipo de dados varbinary(max), varchar(max) ou nvarchar(max) é atribuído um valor NULL quando __$operation = 3, a não ser que a coluna tenha sido alterada durante a atualização. Quando __$operation = 1, é atribuído a essas coluna o valor no momento da exclusão. Colunas computadas que são incluídas em uma instância de captura têm sempre um valor de NULL.

Exemplos

Estão disponíveis vários modelos do SQL Server Management Studio que mostram como usar as funções de consulta de captura de dados de alteração. Esses modelos estão disponíveis no menu Exibir no Management Studio. Para obter mais informações, consulte Usando modelos do SQL Server Management Studio.

Este exemplo mostra o Enumerate All Changes for Valid Range Template. Ele usa a função cdc.fn_cdc_get_all_changes_HR_Department para relatar todas as alterações disponíveis atualmente para a instância de captura HR_Department, que é definida para a tabela de origem HumanResources.Department no banco de dados AdventureWorks2008R2.

-- ==================================================
-- Enumerate All Changes for Valid Range Template
-- ==================================================
USE AdventureWorks2008R2;
GO

DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn =
   sys.fn_cdc_get_min_lsn('HR_Department')
SET @to_lsn   = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_HR_Department
  (@from_lsn, @to_lsn, N'all');
GO