sys.sp_cdc_cleanup_change_table (Transact-SQL)

Remove linhas da tabela de alteração no banco de dados atual com base no valor low_water_mark especificado. Esse procedimento armazenado é fornecido para usuários que desejam gerenciar diretamente o processo de limpeza da tabela de alteração. Porém, é necessário ter cuidado, porque o procedimento afeta todos os consumidores de dados na tabela de alteração.

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

sys.sp_cdc_cleanup_change_table 
  [ @capture_instance = ] 'capture_instance', 
  [ @low_water_mark = ] low_water_mark ,
  [ @threshold = ]'delete threshold'

Argumentos

  • [ @capture\_instance = ] 'capture_instance'
    É o nome da instância de captura associada à tabela de alteração. capture_instance é sysname, sem padrão e não pode ser NULL.

    capture_instance deve nomear uma instância de captura existente no banco de dados atual.

  • [ @low\_water\_mark = ] low_water_mark
    É um LSN (número de sequência de log) que precisa ser usado como a nova marca d’água baixa de capture instance. low_water_mark é binary(10), sem padrão.

    Se o valor for não nulo, ele deverá aparecer como o valor start_lsn de uma entrada atual da tabela cdc.lsn_time_mapping. Se outras entradas no cdc.lsn_time_mapping compartilharem a mesma hora de confirmação que a entrada identificada pela nova marca d’água baixa, o menor LSN associado a esse grupo de entradas será escolhido como a marca d’água baixa.

    Se o valor estiver definido explicitamente como NULL, a low watermark atual da capture instance será usada para definir o limite superior da operação de limpeza.

  • [ @threshold= ] 'delete threshold'
    É o número máximo de entradas de exclusão que podem ser excluídas usando uma única instrução na limpeza. delete_threshold é bigint, com o padrão de 5000.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Conjuntos de resultados

Nenhum

Comentários

sys.sp_cdc_cleanup_change_table executa as seguintes operações:

  1. Se o parâmetro @low\_water\_mark não for NULL, ele definirá o valor start_lsn da capture instance como a nova low watermark.

    ObservaçãoObservação

    A nova marca d’água baixa pode não ser a marca d’água baixa especificada na chamada do procedimento armazenado. Se outras entradas na tabela cdc.lsn_time_mapping compartilharem a mesma hora de confirmação, o menor start_lsn representado no grupo de entradas será selecionado como a marca d’água baixa ajustada. Se o parâmetro @low_water_mark for NULL ou se a marca d’água baixa atual for superior à nova marca d’água baixa, o valor start_lsn da instância de captura permanecerá inalterado.

  2. As entradas da tabela de alteração com valores __$start_lsn menores do que a marca d’água baixa serão excluídas. O limite de exclusão é usado para limitar o número de linhas excluídas em uma única transação. Uma falha ao excluir as entradas é relatada, mas não afeta nenhuma alteração na marca d’água baixa da instância de captura que pode ter sido feita com base na chamada.

Use sys.sp_cdc_cleanup_change_table nas seguintes circunstâncias:

  • O trabalho do Agente de limpeza relata falhas de exclusão.

    Um administrador pode executar esse procedimento armazenado explicitamente para tentar novamente a operação com falha. Para tentar a limpeza novamente em uma determinada instância de captura, execute sys.sp_cdc_cleanup_change_table e especifique NULL para o parâmetro @low\_water\_mark.

  • A política baseada em retenção simples usada pelo trabalho do Agente de limpeza não é adequada.

    Como esse procedimento armazenado faz a limpeza de uma única instância de captura, ele pode ser usado para criar uma estratégia de limpeza personalizada que ajusta as regras de limpeza para a instância de captura individual.

Permissões

Exige a associação à função de banco de dados fixa db_owner.

Consulte também

Referência

cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)

sys.fn_cdc_get_min_lsn (Transact-SQL)

sys.fn_cdc_increment_lsn (Transact-SQL)