Share via


sys.sp_cdc_cleanup_change_table (Transact-SQL)

Rimuove righe dalla tabella delle modifiche del database corrente in base al valore low_water_mark specificato. Questa stored procedure è fornita agli utenti che vogliono gestire direttamente il processo di pulizia della tabella delle modifiche. Tuttavia, è necessario fare attenzione poiché la procedura influisce su tutti gli utenti dei dati della tabella delle modifiche.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • [ @capture\_instance = ] 'capture_instance'
    Nome dell'istanza di acquisizione associata alla tabella delle modifiche. capture_instance è sysname, non prevede alcuna impostazione predefinita e non può essere NULL.

    capture_instance deve denominare un'istanza di acquisizione che esiste nel database corrente.

  • [ @low\_water\_mark = ] low_water_mark
    Numero di sequenza del file di log (LSN) utilizzato come nuovo limite minimo per capture instance. low_water_mark è di tipo binary(10) e non prevede alcuna impostazione predefinita.

    Se il valore è diverso da NULL, deve essere utilizzato come valore start_lsn di una voce corrente nella tabella cdc.lsn_time_mapping. Se altre voci in cdc.lsn_time_mapping condividono la stessa ora di commit della voce identificata dal nuovo limite minimo, il valore LSN minore associato a tale gruppo di voci viene scelto come limite minimo.

    Se il valore è impostato in modo esplicito su NULL, il valore low watermark corrente per capture instance viene utilizzato per definire il limite superiore per l'operazione di pulizia.

  • [ @threshold = ] 'delete threshold'
    Numero massimo di voci che possono essere eliminate utilizzando un'unica istruzione nel processo di pulizia. delete_threshold è di tipo bigint con valore predefinito uguale a 5000.

Codici restituiti

0 (esito positivo) o 1 (esito negativo)

Set di risultati

Nessuno

Osservazioni

sys.sp_cdc_cleanup_change_table esegue le operazioni seguenti:

  1. Se il parametro @low\_water\_mark è diverso da NULL, il valore di start_lsn per capture instance viene impostato sul nuovo valore low watermark.

    [!NOTA]

    Il nuovo limite minimo potrebbe non essere quello specificato nella chiamata alla stored procedure. Se altre voci nella tabella cdc.lsn_time_mapping condividono la stessa ora di commit, il valore start_lsn più piccolo rappresentato nel gruppo di voci viene selezionato come limite minimo modificato. Se il parametro @low_water_mark è NULL o il limite minimo corrente è più grande del nuovo limite minimo, il valore start_lsn per l'istanza di acquisizione non viene modificato.

  2. Le voci della tabella delle modifiche con valori __$start_lsn inferiori al limite minimo vengono quindi eliminate. La soglia di eliminazione viene utilizzata per limitare il numero di righe eliminate in una singola transazione. Viene restituito un errore sull'eliminazione delle voci, che però non influisce sulle modifiche apportate al limite minimo dell'istanza di acquisizione in base alla chiamata.

Utilizzare sys.sp_cdc_cleanup_change_table nelle circostanze seguenti:

  • I report del processo Cleanup Agent eliminano gli errori.

    Un amministratore può eseguire questa stored procedure in modo esplicito per riprovare un'operazione non riuscita. Per riprovare a eseguire un processo di pulizia per un'istanza di acquisizione specifica, eseguire sys.sp_cdc_cleanup_change_table specificando NULL per il parametro @low\_water\_mark.

  • Il criterio basato sulla memorizzazione utilizzato dal processo di Cleanup Agent non è adeguato.

    Poiché questa stored procedure esegue il processo di pulizia per una singola istanza di acquisizione, è possibile utilizzarla per creare una strategia di pulizia personalizzata in modo da applicare le regole di pulizia in base alla singola istanza di acquisizione.

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del database db_owner.