sys.sp_cdc_cleanup_change_table (Transact-SQL)

Entfernt auf Basis des unter low_water_mark angegebenen Werts Zeilen aus der Änderungstabelle in der aktuellen Datenbank. Diese gespeicherte Prozedur wird für Benutzer bereitgestellt, die den Cleanupprozess für Änderungstabellen direkt verwalten möchten. Da diese Prozedur alle Consumer der Änderungstabellendaten betrifft, sollte sie mit Vorsicht eingesetzt werden.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • [ @capture\_instance = ] 'capture_instance'
    Der Name der mit der Änderungstabelle verknüpften Aufzeichnungsinstanz. capture_instance ist vom Datentyp sysname, hat keinen Standardwert und darf nicht NULL sein.

    capture_instance muss eine Aufzeichnungsinstanz benennen, die in der aktuellen Datenbank vorhanden ist.

  • [ @ low_water_mark =] low_water_mark
    Eine Protokollfolgenummer (Log Sequence Number, LSN), die als neue Untergrenzenmarkierung für die capture instance verwendet werden soll. low_water_mark ist vom Datentyp binary(10) und besitzt keinen Standardwert.

    Wenn der Wert ungleich NULL ist, muss er als start_lsn-Wert eines aktuellen Eintrags in der cdc.lsn_time_mapping-Tabelle vorkommen. Wird die Commitzeit des Eintrags, der durch die neue untere Grenze identifiziert wurde, auch in anderen cdc.lsn_time_mapping-Einträgen verwendet, wird für die untere Grenze die kleinste LSN der zu dieser Gruppe gehörenden Einträge verwendet.

    Wenn der Wert explizit auf NULL festgelegt wird, wird die aktuelle low watermark für die capture instance zur Definition der oberen Grenze für den Cleanupvorgang verwendet.

  • [ @threshold = ] 'delete threshold'
    Die maximale Anzahl von Einträgen für Löschvorgänge, die mit einer einzelnen Anweisung beim Cleanup gelöscht werden können. delete_threshold ist vom Datentyp bigint und weist einen Standardwert von 5000 auf.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Resultsets

Keine

Hinweise

sys.sp_cdc_cleanup_change_table führt die folgenden Vorgänge aus:

  1. Wenn der @low_water_mark-Parameter ungleich NULL ist, legt er den start_lsn-Wert für die capture instance auf die neue low watermark fest.

    HinweisHinweis

    Bei der neuen Untergrenzenmarkierung muss es sich nicht zwingend um die im Aufruf der gespeicherten Prozedur angegebene Untergrenzenmarkierung handeln. Wenn andere Einträge in der Tabelle cdc.lsn_time_mapping dieselbe Commitzeit aufweisen, wird für die angepasste untere Grenze der kleinste in dieser Gruppe dargestellte start_lsn-Wert verwendet. Wenn der Parameter @low_water_mark den Wert NULL hat, oder wenn die aktuelle untere Grenze größer als die neue untere Grenze ist, wird der start_lsn-Wert für die Aufzeichnungsinstanz nicht geändert.

  2. Einträge in Änderungstabellen, deren __$start_lsn-Werte kleiner als die untere Grenze sind, werden dann gelöscht. Der Schwellenwert für das Löschen wird verwendet, um die Anzahl der in einer einzelnen Transaktion gelöschten Zeilen zu begrenzen. Fehler beim Löschen der Einträge werden gemeldet, haben jedoch keine Auswirkung auf Änderungen der unteren Grenze der Aufzeichnungsinstanz, die basierend auf dem Aufruf möglicherweise erfolgt sind.

Verwenden Sie sys.sp_cdc_cleanup_change_table in den folgenden Fällen:

  • Der Cleanup-Agent-Auftrag meldet Fehler beim Löschen.

    Administratoren können diese gespeicherte Prozedur explizit ausführen, um einen fehlgeschlagenen Vorgang zu wiederholen. Wenn Sie einen fehlgeschlagenen Cleanupversuch für eine Aufzeichnungsinstanz wiederholen möchten, führen Sie sys.sp_cdc_cleanup_change_table aus, und geben Sie NULL für den @low_water_mark-Parameter an.

  • Die vom Cleanup-Agent-Auftrag verwendete einfache, beibehaltungsbasierte Richtlinie ist ungeeignet.

    Da diese gespeicherte Prozedur Cleanups für einzelne Aufzeichnungsinstanzen ausführt, kann sie verwendet werden, um eine benutzerdefinierte Cleanupstrategie zu erstellen, mit der die Regeln für Cleanups einzelner Aufzeichnungsinstanzen angepasst werden können.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Datenbankrolle db_owner.