sys.fn_net_changes_<capture_instance> (Transact-SQL)
Aplica-se: SQL Server
Wrappers para as funções de consulta net changes . Os scripts necessários para criar essas funções são gerados pelo sys.sp_cdc_generate_wrapper_function
procedimento armazenado. Para obter mais informações sobre o procedimento armazenado usado para criar sys.fn_net_changes_<capture_instance>
o , consulte sys.sp_cdc_generate_wrapper_function (Transact-SQL).
Convenções de sintaxe de Transact-SQL
Sintaxe
fn_net_changes_<capture_instance> ('start_time', 'end_time', '<row_filter_option>' )
<capture_instance> ::= The name of the capture instance.
<row_filter_option> ::=
{ all
| all with mask
| all with merge
}
Argumentos
start_time
O valor datetime que representa o ponto final inferior do intervalo de entradas da tabela de alterações a serem incluídas no conjunto de resultados.
Somente as linhas na tabela de cdc.<capture_instance>_CT
alterações que têm um tempo de confirmação associado estritamente maior que start_time são incluídas no conjunto de resultados.
Se um valor NULL for fornecido para este argumento, o ponto de extremidade inferior do intervalo da consulta corresponderá ao ponto de extremidade inferior de um intervalo válido para a instância de captura.
Se o valor do parâmetro @start_time ou @end_time exceder o tempo do LSN mais baixo ou do LSN mais alto, a execução das funções de wrapper geradas retornará no erro 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function
. Esse erro deve ser resolvido pelo desenvolvedor.
end_time
O valor datetime que representa o ponto final superior do intervalo de entradas da tabela de alterações a serem incluídas no conjunto de resultados.
Esse parâmetro pode assumir um dos dois significados, dependendo do valor escolhido para @closed_high_end_point quando sys.sp_cdc_generate_wrapper_function
é chamado para gerar o script para criar a função wrapper:
@closed_high_end_point = 1
Somente as linhas na tabela de
cdc.<capture_instance>_CT
alteração que têm um valor em __$start_lsn e um tempo de confirmação correspondente menor ou igual a start_time são incluídas no conjunto de resultados.@closed_high_end_point = 0
Somente as linhas na tabela de
cdc.<capture_instance>_CT
alteração que têm um valor em __$start_lsn e um tempo de confirmação correspondente estritamente menor que start_time são incluídas no conjunto de resultados.
Se um valor NULL for fornecido para este argumento, o ponto de extremidade superior do intervalo da consulta corresponderá ao ponto de extremidade superior de um intervalo válido para a instância de captura.
Se o valor do parâmetro @start_time ou @end_time exceder o tempo do LSN mais baixo ou do LSN mais alto, a execução das funções de wrapper geradas retornará no erro 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function
. Esse erro deve ser resolvido pelo desenvolvedor.
<> row_filter_option ::= { all | all with mask | all with merge }
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 o conteúdo final de uma linha alterada nas colunas de conteúdo e a operação que é requerida para aplicar a linha na coluna de metadados __CDC_OPERATION.
all with mask
Retorna o conteúdo final de todas as linhas alteradas nas colunas de conteúdo e a operação que é necessária para aplicar cada linha na coluna de metadados __CDC_OPERATION. Se uma lista de sinalizadores atualizada foi especificada durante a geração do script para criar a função de wrapper, essa opção será requerida para popular a máscara atualizada.
all with merge
Retorna o conteúdo final de todas as linhas alteradas nas colunas de conteúdo.
A coluna __CDC_OPERATION terá um dos seguintes dois valores:
D, se a linha deve ser excluída.
M, se a linha dever ser inserida ou atualizada.
A lógica para determinar se uma inserção ou atualização é necessária para aplicação de uma alteração ao destino aumenta a complexidade da consulta. Use essa opção para obter desempenho aprimorado quando não for necessário fazer diferença entre operações de inserção e de atualização. Essa abordagem funciona melhor em ambientes de destino em que uma operação de mesclagem está disponível diretamente.
Tabela retornada
Nome da coluna | Tipo de coluna | Descrição |
---|---|---|
<colunas de @column_list> | varia | As colunas identificadas no argumento column_list para quando sp_cdc_generate_wrapper_function ele é chamado para gerar o script para criar o wrapper. Se column_list for NULL, todas as colunas de origem controladas aparecerão no conjunto de resultados. |
__CDC_OPERATION | nvarchar(2) | Um código de operação que indica qual operação é necessária para se aplicar a linha ao ambiente de destino. A operação variará de acordo com o valor do argumento row_filter_option fornecido na seguinte chamada: row_filter_option = 'todos' , 'todos com máscara' 'D' – exclui a operação 'I' – insere a operação 'UN' – atualiza a operação row_filter_option = 'tudo com mesclagem' 'D' – exclui a operação 'M – insere ou atualiza a operação |
<colunas de @update_flag_list> | bit | Um sinalizador de bit é nomeado acrescentando _uflag ao nome da coluna. O sinalizador assume um valor não NULL somente quando row_filter_option = 'all with mask' e __CDC_OPERATION = 'UN'. Ele é definido como 1 se a coluna correspondente foi modificada dentro da janela de consulta. Caso contrário, será 0. |
Comentários
A fn_net_changes_<capture_instance>
função serve como um wrapper para a cdc.fn_cdc_get_net_changes_<capture_instance>
função de consulta. O sys.sp_cdc_generate_wrapper
procedimento armazenado é usado para criar o script para o wrapper.
As funções de wrapper não são criadas automaticamente. Há duas coisas que você precisa fazer para criar funções de wrapper:
Executar o procedimento armazenado para gerar o script para criar o wrapper.
Executar o script para realmente criar a função de wrapper.
As funções de wrapper permitem que os usuários consultem sistematicamente as alterações que ocorreram dentro de um intervalo limitado por valores datetime em vez de valores LSN. As funções de wrapper executam todas as conversões necessárias entre os valores de data e hora fornecidos e os valores LSN necessários internamente como argumentos para as funções de consulta. Quando as funções de wrapper são usadas em série para processar um fluxo de dados de alteração, elas garantem que nenhum dado seja perdido ou repetido, desde que a seguinte convenção seja seguida: o @end_time valor do intervalo associado a uma chamada é fornecido como o @start_time valor do intervalo associado à chamada subsequente.
Usando o parâmetro @closed_high_end_point ao criar o script, você pode gerar wrappers para oferecer suporte a um limite superior fechado ou a um limite superior em aberto na janela de consulta especificada. Ou seja, você pode decidir se as entradas que têm uma hora de confirmação igual ao limite superior do intervalo de extração devem ser incluídas no intervalo. Por padrão, o limite superior é incluído.
O conjunto de resultados retornado pela função wrapper net changes retorna apenas as @column_list colunas controladas que estavam no quando o wrapper foi gerado. Se @column_list for NULL, todas as colunas de origem rastreadas serão retornadas. As colunas de origem são acompanhadas por uma coluna de operação, __CDC_OPERATION, que é uma coluna de um ou dois caracteres que identifica a operação.
Em seguida, os sinalizadores de bit são acrescentados ao conjunto de resultados para cada coluna identificada no parâmetro @update_flag_list. Para o wrapper de alterações líquidas, os sinalizadores de bit sempre serão NULL se o @row_filter_option que é usado na chamada para a função wrapper for 'all' ou 'all with merge'. Se o @row_filter_option for definido como 'todos com máscara' e __CDC_OPERATION for 'D' ou 'I', o valor do sinalizador também será NULL. Se __CDC_OPERATION for 'UN', o sinalizador será definido como 1 ou 0, dependendo se a operação de atualização líquida causou uma alteração na coluna.
O modelo de configuração de captura de dados de alteração 'Instanciar TVFs de wrapper CDC para esquema' mostra como usar o sp_cdc_generate_wrapper_function
procedimento armazenado para obter scripts CREATE para todas as funções de wrapper para as funções de consulta definidas de um esquema. Em seguida, o modelo cria esses scripts. Para obter mais informações sobre modelos, consulte Gerenciador de Modelos.
O wrapper funciona sys.fn_all_changes_<capture_instance>
e sys.fn_net_changes_<capture_instance>
depende das funções cdc.fn_cdc_get_all_changes_<capture_instance>
do sistema e cdc.fn_cdc_get_net_changes_<capture_instance>
do . 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 lsn_value
parâmetro estiver além do tempo do LSN mais baixo ou do LSN mais alto, a execução dessas funções retornará no erro 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function
. Esse erro deve ser resolvido pelo desenvolvedor.