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
Wrappers para as funções de consulta de todas as alterações . 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_all_changes_<capture_instance>, veja sys.sp_cdc_generate_wrapper_function (Transact-SQL).
Transact-SQL convenções de sintaxe
Sintaxe
fn_all_changes_<capture_instance> ('start_time' ,'end_time', '<row_filter_option>' )
<capture_instance> ::= The name of the capture instance.
<row_filter_option> ::=
{ all
| all update old
}
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 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 possíveis, dependendo do valor escolhido para @closed_high_end_point quando sys.sp_cdc_generate_wrapper_function é chamado para gerar o script de criação da função wrapper:
@closed_high_end_point = 1
Apenas as linhas na
cdc.<capture_instance>_CTtabela de alterações que tenham um tempo de commit associado inferior ou igual a end_time são incluídas no conjunto de resultados.@closed_high_end_point = 0
Apenas linhas na
cdc.capture_instance_CTtabela de alterações que tenham um tempo de commit associado estritamente inferior a end_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> ::= { todos | todos atualizam antigo }
Uma opção que governa o conteúdo das colunas de metadados e das linhas que são devolvidas no conjunto de resultados.
Pode ser uma das seguintes opções:
all
Retorna todas as alterações dentro do intervalo LSN especificado. Para alterações que ocorrem devido a uma operação de atualização, esta opção só devolve a linha que contém os novos valores após a aplicação da atualização.
Todas as atualizações antigas
Retorna todas as alterações dentro do intervalo LSN especificado. Para alterações que ocorrem devido a uma operação de atualização, esta opção devolve as duas linhas que contêm os valores das colunas antes e depois da atualização.
Tabela retornada
| Nome da coluna | Tipo de coluna | Description |
|---|---|---|
| __CDC_STARTLSN | binário(10) | O LSN de commit da transação associada à alteração. Todas as alterações que são comprometidas na mesma transação partilham o mesmo LSN de commit. |
| __CDC_SEQVAL | binário(10) | Valor de sequência usado para ordenar as alterações de linha numa transação. |
| <colunas de @column_list> | varies | As colunas identificadas no argumento column_list até sp_cdc_generate_wrapper_function quando é chamado para gerar o script que cria a função wrapper. |
| __CDC_OPERATION | nvarchar(2) | Código de operação que indica a operação necessária para aplicar a linha ao ambiente de destino. Variará consoante o valor do argumento row_filter_option apresentado na chamada: row_filter_option = 'todos' 'D' - operação de apagar 'I' - inserir operação 'UN' - operação de atualização de novos valores row_filter_option = 'todos atualizados antigos' 'D' - operação de apagar 'I' - inserir operação 'UN' - operação de atualização de novos valores 'UO' - valores antigos da operação de atualização |
| <colunas de @update_flag_list> | bit | Uma flag de bit é nomeada acrescentando _uflag ao nome da coluna. A flag está sempre definida como NULL quando __CDC_OPERATION é 'D', 'I', de 'UO'. Quando __CDC_OPERATION é 'UN', é definido para 1 se a atualização tiver produzido uma alteração na coluna correspondente. Caso contrário, 0. |
Observações
A fn_all_changes_<capture_instance> função serve como um wrapper para a cdc.fn_cdc_get_all_changes_<capture_instance> função de consulta. O sys.sp_cdc_generate_wrapper procedimento armazenado é usado para gerar o script que cria o wrapper.
As funções wrapper não são criadas automaticamente. Há duas coisas que deve fazer para criar funções de wrapper:
Executa o procedimento armazenado para gerar o script que cria o wrapper.
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 envolvimento de todas as alterações devolve as colunas __$start_lsn e __$seqval da tabela de alterações como colunas __CDC_STARTLSN e __CDC_SEQVAL, respetivamente. Segue-se apenas com as colunas acompanhadas que apareciam no parâmetro @column_list quando 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 @update_flag_list parâmetro. Para o wrapper de todas as alterações , os flags de bits serão sempre NULL se __CDC_OPERATION for 'D', 'I' ou 'UO'. Se __CDC_OPERATION for 'UN', a flag será definida para 1 ou 0, dependendo se a operação de atualização 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.