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 rubrique Conventions de la 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 ; sa valeur ne peut pas être 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) et n'a pas de 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 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'
    Est le 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 affecte à start_lsn pour capture instance la valeur 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 demeure inchangée.

  2. Les entrées de table de modifications ayant des valeurs __$start_lsn inférieures à la limite inférieure sont alors 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.

Voir aussi

Référence

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)