Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Retorna uma linha para cada alteração aplicada à tabela de origem dentro do intervalo de número de sequência de log (LSN) especificado. Se uma linha de origem tiver várias alterações durante o intervalo, cada alteração será representada 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 aplicar as alterações a outra fonte de dados.
As opções de filtragem de linhas controlam o conteúdo das colunas de metadados e as linhas retornadas no conjunto de resultados. Quando a opção filtro de todas as linha é especificada, cada alteração tem exatamente uma linha para identificar a alteração. Quando a opção todas as antigas de atualização é 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 a captura de dados de alteração. O nome da função é derivado e usa o formato cdc.fn_cdc_get_all_changes_<capture_instance> onde capture_instance é o valor especificado para a instância de captura quando a tabela de origem está habilitada para captura de dados de alteração.
Transact-SQL convenções de sintaxe
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
O valor LSN que representa o ponto final baixo do intervalo LSN a ser incluído no conjunto de resultados. from_lsn é binário(10).
Apenas linhas no cdc. [capture_instance]_CT tabela de alteração com um valor em __$start_lsn maior ou igual a from_lsn são incluídas no conjunto de resultados.
to_lsn
O valor LSN que representa o ponto final alto do intervalo LSN a ser incluído no conjunto de resultados. to_lsn é binário(10).
Apenas linhas no cdc. [capture_instance]_CT tabela de variação com um valor em __$start_lsn maior ou igual a from_lsn e menor ou igual a to_lsn são incluídas no conjunto de resultados.
<row_filter_option>
Uma opção que rege o conteúdo das colunas de metadados e as linhas retornadas no conjunto de resultados.
Pode ser uma das seguintes opções:
todos os
Retorna todas as alterações dentro do intervalo LSN especificado. Para alterações devido a uma operação de atualização, essa opção só retorna a linha que contém os novos valores após a atualização ser aplicada.
todos atualizam antigos
Retorna todas as alterações dentro do intervalo LSN especificado. Para alterações devido a uma operação de atualização, essa opção retorna a linha que contém os valores de coluna antes da atualização e a linha que contém os valores de coluna após a atualização.
Tabela retornada
| Nome da coluna | Tipo de dados | Descrição |
|---|---|---|
__$start_lsn |
binário(10) | Confirmar LSN associado à alteração que preserva a ordem de confirmação da alteração. Alterações cometidas na mesma transação compartilham o mesmo valor de LSN de confirmação. |
__$seqval |
binário(10) | Valor de sequência usado para ordenar 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 um dos seguintes valores:1 = eliminar2 = inserir3 = update (os valores de coluna capturados são valores de coluna antes da operação de atualização). Este valor aplica-se apenas quando a opção de filtro de linha 'todas as atualizações antigas' é especificada.4 = update (valores de coluna capturados são valores de coluna após a operação de atualização) |
__$update_mask |
varbinary(128) | Uma máscara de bits com um bit correspondente a cada coluna capturada identificada para a instância de captura. Esse valor tem todos os bits definidos definidos como 1 quando __$operation é 1 ou 2. Quando __$operation é 3 ou 4, somente os bits correspondentes às colunas que foram alteradas são definidos como 1. |
<captured source table columns> |
varia | As colunas restantes retornadas pela função são as colunas capturadas identificadas quando a instância de captura foi criada. Se nenhuma coluna for especificada na lista de colunas capturadas, todas as colunas da tabela de origem serão retornadas. |
Permissões
Requer associação ao sysadmin função de servidor fixa ou db_owner função de banco de dados fixa. 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 de seleção para a instância de captura foi definida, a associação a essa 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:
The SELECT permission was denied on the object 'fn_cdc_get_all_changes_...', database '<DatabaseName>', schema 'cdc'.
Comentários
As colunas do tipo de dados imagem, de texto e ntext recebem sempre um valor NULL quando __$operation é 1 ou __$operation é 3. As colunas do tipo de dados varbinary(max) , varchar(max)ou nvarchar(max) recebem um valor NULL quando __$operation é 3, a menos que a coluna tenha sido alterada durante a atualização. Quando __$operation é 1, essas colunas recebem seu valor no momento da exclusão. As colunas computadas incluídas em uma instância de captura sempre têm um valor de NULL.
O erro 313 é esperado se o intervalo LSN fornecido não for apropriado ao chamar cdc.fn_cdc_get_all_changes_<capture_instance> ou cdc.fn_cdc_get_net_changes_<capture_instance>. Se o parâmetro lsn_value estiver além do tempo de LSN mais baixo ou LSN mais alto, a execução dessas funções retornará o erro 313:
Msg 313, Level 16, State 3, Line 1
An insufficient number of arguments were supplied for the procedure or function.
Este erro deve ser tratado pelo desenvolvedor.
Exemplos
Vários modelos do SQL Server Management Studio estão disponíveis 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
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 atualmente disponíveis para a instância de captura HR_Department, que é definida para a tabela de origem HumanResources.Department no banco de dados AdventureWorks2025.
-- Enumerate All Changes for Valid Range Template
USE AdventureWorks2022;
GO
DECLARE @from_lsn AS BINARY (10), @to_lsn AS 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