sys.sp_cdc_cleanup_change_table (Transact-SQL)

Quita las filas de la tabla de cambios en la base de datos actual basada en el valor low_water_mark especificado. Este procedimiento almacenado se proporciona a los usuarios que desean administrar directamente la proceso de limpieza de las tablas de cambios. Sin embargo, se debe utilizar con precaución, porque el procedimiento afecta a todos los consumidores de los datos en la tabla de cambios.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • [ @capture_instance = ] 'capture_instance'
    Es el nombre de la instancia de captura asociada con una tabla de cambios. capture_instance es de tipo sysname, sin valor predeterminado y no puede ser NULL.

    capture_instance debe hacer referencia a una instancia de captura que exista en la base de datos actual.

  • [ @low_water_mark = ] low_water_mark
    Es un número de secuencia de registro (LSN) que se usará como la nueva marca de límite inferior para capture instance. low_water_mark es de tipo binary(10) y no tiene valor predeterminado.

    Si el valor es diferente de NULL, debe aparecer como valor start_lsn de una entrada actual en la tabla cdc.lsn_time_mapping. Si otras entradas de cdc.lsn_time_mapping comparten la misma la hora de confirmación que la entrada identificada por el nuevo límite inferior, el LSN más pequeño asociado a dicho grupo de entradas se elige como límite inferior.

    Si el valor se establece explícitamente en NULL, el valor low watermark actual de capture instance se utiliza para definir el límite superior en la operación de limpieza.

  • [ @threshold = ] 'delete threshold'
    Es el número máximo de entradas de eliminación que se pueden eliminar mediante el uso de una única instrucción en la limpieza. delete_threshold es bigint y su valor predeterminado es 5000.

Valores de código de retorno

0 (correcto) o 1 (error)

Conjuntos de resultados

Ninguno

Comentarios

sys.sp_cdc_cleanup_change_table realiza las operaciones siguientes:

  1. Si el parámetro @low_water_mark no es NULL, establece el valor de start_lsn para capture instance en el nuevo low watermark.

    Nota

    El nuevo límite mínimo puede no ser el límite mínimo que se especifica en la llamada al procedimiento almacenado. Si otras entradas de la tabla cdc.lsn_time_mapping tienen la misma hora de confirmación, se selecciona el valor start_lsn menor representado en el grupo de entradas como el límite mínimo ajustado. Si el parámetro @low_water_mark es NULL o el límite mínimo actual es mayor que el nuevo límite mínimo, el valor de start_lsn de la instancia de captura permanece invariable.

  2. A continuación, se eliminan las entradas de la tabla de cambios con valores de __$start_lsn menores que el límite mínimo. El umbral de eliminación se utiliza para limitar el número de filas eliminadas en una sola transacción. Si no se pueden eliminar correctamente las entradas, se notifica, pero esto no afecta a ningún cambio en el límite mínimo de la instancia de captura que se haya realizado con la llamada.

Utilice sys.sp_cdc_cleanup_change_table en las circunstancias siguientes:

  • El agente de limpieza notifica errores de eliminación.

    Un administrador puede ejecutar explícitamente este procedimiento almacenado para reintentar una operación que no se ha ejecutado correctamente. Para volver a realizar la limpieza para una instancia de captura determinada, ejecute sys.sp_cdc_cleanup_change_table y especifique NULL para el parámetro @low_water_mark.

  • La directiva simple basada en retención utilizada por el trabajo del agente de limpieza no es correcta.

    Como este procedimiento almacenado realiza la limpieza para una instancia de captura única, se puede utilizar para generar una estrategia de limpieza personalizada que se adapte a las reglas de limpieza de cada instancia de captura.

Permisos

Debe pertenecer a la función fija de base de datos db_owner.