Partilhar via


sys.fn_net_changes_<capture_instance> (Transact-SQL)

Aplica-se a:SQL Server

Wrappers para as funções de consulta de alterações net . Os scripts necessários para criar estas funções são gerados pelo sys.sp_cdc_generate_wrapper_function procedimento armazenado. Para mais informações sobre o procedimento armazenado usado para criar sys.fn_net_changes_<capture_instance>, veja sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Transact-SQL convenções de sintaxe

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  
}  

Arguments

start_time

O valor de data-hora que representa o ponto final inferior do intervalo de entradas da tabela de alterações a incluir no conjunto de resultados.

Apenas as linhas na cdc.<capture_instance>_CT tabela de alterações que tenham um tempo de commit associado estritamente superior a start_time são incluídas no conjunto de resultados.

Se for fornecido um valor de NULL para este argumento, o ponto final mais baixo do intervalo de consulta corresponderá ao ponto final inferior do intervalo válido para a instância de captura.

Se o valor de qualquer um @start_time dos parâmetros ou @end_time for superior ao tempo do LSN mais baixo ou do LSN mais alto, então a execução das funções wrapper geradas 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.

end_time

O valor de data-hora que representa o ponto final superior do intervalo de entradas da tabela de alterações a incluir no conjunto de resultados.

Este parâmetro pode assumir um de dois significados, dependendo do valor escolhido para @closed_high_end_point quando sys.sp_cdc_generate_wrapper_function é chamado para gerar o script que cria a função wrapper:

  • @closed_high_end_point = 1

    Apenas linhas na cdc.<capture_instance>_CT tabela de alterações que tenham um valor em __$start_lsn e um tempo de commit correspondente inferior ou igual a start_time são incluídas no conjunto de resultados.

  • @closed_high_end_point = 0

    Apenas linhas na cdc.<capture_instance>_CT tabela de alterações que tenham um valor em __$start_lsn e um tempo de commit correspondente estritamente inferior a start_time são incluídas no conjunto de resultados.

Se for fornecido um valor de NULL para este argumento, o ponto final superior do intervalo de consulta corresponderá ao ponto final superior do intervalo válido para a instância de captura.

Se o valor de qualquer um @start_time dos parâmetros ou @end_time for superior ao tempo do LSN mais baixo ou do LSN mais alto, então a execução das funções wrapper geradas 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.

<row_filter_option> ::= { all | all with mask | all with merge }

Uma opção que regula o conteúdo das colunas de metadados, bem como as linhas devolvidas no conjunto de resultados. Pode ser uma das seguintes opções:

all
Devolve o conteúdo final de uma linha alterada nas colunas de conteúdo e a operação necessária para aplicar a linha na coluna de metadados __CDC_OPERATION.

todos com máscara
Devolve o conteúdo final de todas as linhas alteradas nas colunas de conteúdo e a operação necessária para aplicar cada linha na coluna de metadados __CDC_OPERATION. Se uma lista de flags de atualização foi especificada quando gerou o script para criar a função wrapper, esta opção é necessária para preencher a máscara de atualização.

todos com fusão
Devolve o conteúdo final de todas as linhas alteradas nas colunas de conteúdo.

A coluna __CDC_OPERATION será um dos seguintes dois valores:

  • D, se a linha tiver de ser eliminada.

  • M, se a linha tiver de ser inserida ou atualizada.

A lógica para determinar se é necessária uma inserção ou atualização para aplicar uma alteração ao destino aumenta a complexidade da consulta. Use esta opção para melhorar o desempenho quando não for necessário diferenciar entre operações de inserção e atualização. Esta abordagem funciona melhor em ambientes-alvo onde uma operação de fusão está disponível diretamente.

Tabela retornada

Nome da coluna Tipo de coluna Description
<colunas de @column_list> varies As colunas identificadas no argumento column_list para quando sp_cdc_generate_wrapper_function é chamado para gerar o script para criar o wrapper. Se column_list for NULL, todas as colunas de origem acompanhadas aparecerão no conjunto de resultados.
__CDC_OPERATION nvarchar(2) Um código de operação que indica qual a operação necessária para aplicar a linha ao ambiente alvo. A operação variará consoante o valor do argumento row_filter_option fornecido na seguinte chamada:

row_filter_option = 'todos' , 'todos com máscara'

'D' - operação de apagar

'I' - inserir operação

'UN' - operação de atualização

row_filter_option = 'todos com fusão'

'D' - operação de apagar

'M' - ou inserir operação ou atualizar operação
<colunas de @update_flag_list> bit Um indicador de bit que é nomeado acrescentando _uflag ao nome da coluna. A bandeira assume um valor não-NULL apenas quando row_filter_option= 'todos com máscara' e __CDC_OPERATION = 'UN'. É definido para 1 se a coluna correspondente for modificada dentro da janela de consulta. Caso contrário, 0.

Observações

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 wrapper não são criadas automaticamente. Há duas coisas que deve fazer para criar funções de wrapper:

  1. Executa o procedimento armazenado para gerar o script que cria o wrapper.

  2. Executa o script para realmente criar a função wrapper.

As funções wrapper permitem aos utilizadores consultar sistematicamente alterações que ocorreram dentro de um intervalo limitado por valores de data-hora em vez de valores LSN. As funções wrapper realizam todas as conversões necessárias entre os valores de data-hora fornecidos e os valores LSN necessários internamente como argumentos para as funções de consulta. Quando as funções wrapper são usadas em série para processar um fluxo de dados de alteração, garantem que nenhum dado é perdido ou repetido, desde que se siga a seguinte convenção: o @end_time valor do intervalo associado a uma chamada é fornecido como @start_time o valor do intervalo associado à chamada subsequente.

Ao usar o @closed_high_end_point parâmetro ao criar o script, pode gerar wrappers para suportar um limite superior fechado ou aberto na janela de consulta especificada. Ou seja, pode decidir se entradas com tempo de commit 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 que é devolvido pela função de wrapper de alterações netas devolve apenas as colunas acompanhadas que estavam no @column_list momento em que o wrapper foi gerado. Se @column_list for NULL, todas as colunas de origem rastreadas são devolvidas. As colunas de origem são seguidas por uma coluna de operação, __CDC_OPERATION, que é uma coluna de um ou dois caracteres que identifica a operação.

As flags de bits são então adicionadas ao conjunto de resultados para cada coluna identificada no parâmetro @update_flag_list. Para o wrapper de net changes , as flags de bit serão sempre 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 estiver definido como 'todos com máscara', e __CDC_OPERATION for 'D' ou 'I', o valor da flag também será NULL. Se __CDC_OPERATION for 'UN', a flag será definida para 1 ou 0, dependendo se a operação de atualização de rede causou uma alteração na coluna.

O modelo de configuração de captura de dados de alteração 'Instanciate CDC Wrapper TVFs for Schema' mostra como usar o sp_cdc_generate_wrapper_function procedimento armazenado para obter scripts CREATE para todas as funções de wrapper das funções de consulta definidas de um esquema. O modelo cria esses scripts. Para mais informações sobre modelos, consulte Explorador de Modelos.

As funções sys.fn_all_changes_<capture_instance> do wrapper e sys.fn_net_changes_<capture_instance> dependem das funções cdc.fn_cdc_get_all_changes_<capture_instance> do sistema e cdc.fn_cdc_get_net_changes_<capture_instance>. O erro 313 é esperado se o alcance do 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 para além do tempo do LSN mais baixo ou do LSN mais alto, então a execução destas 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.

Ver também