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.
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:
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çã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.
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)