Share via


sys.sp_cdc_cleanup_change_table (Transact-SQL)

Supprime des lignes de la table de modifications dans la base de données actuelle selon la valeur low_water_mark spécifiée. Cette procédure stockée est fournie aux utilisateurs qui souhaitent gérer le processus du nettoyage de la table de modifications directement. Toutefois, soyez vigilant, car la procédure affecte tous les consommateurs des données de la table de modifications.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

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

Arguments

  • [ @capture\_instance = ] 'capture_instance'
    Est le nom de l'instance de capture associée à la table de modifications. capture_instance est de type sysname, sans valeur par défaut et ne peut pas avoir la valeur NULL.

    capture_instance doit nommer une instance de capture qui existe dans la base de données actuelle.

  • [@ low_water_mark =] low_water_mark
    Numéro séquentiel dans le journal qui sera utilisé comme nouvelle limite inférieure pour capture instance. low_water_mark est de type binary(10), sans valeur par défaut.

    Si la valeur est autre que Null, elle doit apparaître comme valeur start_lsn d'une entrée actuelle dans la table cdc.lsn_time_mapping. Si d'autres entrées dans cdc.lsn_time_mapping partagent la même heure de validation que l'entrée identifiée par la nouvelle borne inférieure, le plus petit numéro séquentiel dans le journal associé à ce groupe d'entrées est choisi comme borne inférieure.

    Si la valeur est définie explicitement sur NULL, le low watermark actuel de capture instance est utilisé pour définir la limite supérieure pour l'opération de nettoyage.

  • [ @threshold = ] 'delete threshold'
    Nombre maximal d'entrées qui peuvent être supprimées à l'aide d'une instruction unique lors du nettoyage. delete_threshold est de type bigint avec 5000 comme valeur par défaut.

Valeurs des codes de retour

0 (succès) ou 1 (échec)

Jeux de résultats

Aucun

Notes

sys.sp_cdc_cleanup_change_table effectue les opérations suivantes :

  1. Si le paramètre @low\_water\_mark n'a pas la valeur NULL, il définit la valeur de start_lsn pour capture instance sur le nouveau low watermark.

    [!REMARQUE]

    La nouvelle limite inférieure ne peut pas être la limite inférieure spécifiée dans l'appel de procédure stockée. Si d'autres entrées dans la table cdc.lsn_time_mapping partagent la même heure de validation, le plus petit start_lsn représenté dans le groupe d'entrées est sélectionné comme limite inférieure ajustée. Si le paramètre @low_water_mark est NULL ou si la limite inférieure actuelle est supérieure à la nouvelle limite inférieure, la valeur start_lsn pour l'instance de capture est laissée inchangée.

  2. Les entrées de table de modifications avec des valeurs __$start_lsn inférieures à la limite inférieure sont ensuite supprimées. Le seuil de suppression est utilisé pour limiter le nombre de lignes supprimées dans une transaction unique. Un échec de suppression des entrées est signalé, mais n'affecte pas les modifications de la limite inférieure d'instance de capture ayant pu être apportées selon l'appel.

Utilisez sys.sp_cdc_cleanup_change_table dans les circonstances suivantes :

  • Le travail de l'agent de nettoyage signale des échecs de suppression.

    Un administrateur peut exécuter explicitement cette procédure stockée pour réessayer d'effectuer une opération ayant échoué. Pour réessayer d'effectuer le nettoyage pour une instance de capture donnée, exécutez sys.sp_cdc_cleanup_change_table et spécifiez NULL pour le paramètre @low\_water\_mark.

  • La stratégie simple basée sur la rétention utilisée par le travail de l'agent de nettoyage n'est pas adéquate.

    Cette procédure stockée effectuant le nettoyage pour une instance de capture unique, elle peut être utilisée pour générer une stratégie de nettoyage personnalisée qui adapte les règles de nettoyage à l'instance de capture individuelle.

Autorisations

Nécessite l'appartenance au rôle de base de données fixe db_owner.