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.
Convenzioni 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 è di tipo sysname, non prevede alcun valore predefinito 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 alcun valore predefinito.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 e il valore predefinito è 5000.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
Set di risultati
Nessuno
Osservazioni
sys.sp_cdc_cleanup_change_table esegue le operazioni seguenti:
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 minore 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.
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 seguenti circostanze:
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.
I criteri basati sulla memorizzazione utilizzati dal processo di Cleanup Agent non sono adeguati.
Poiché questa stored procedure esegue il processo di pulizia per una singola istanza di acquisizione, è possibile utilizzarla per compilare 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.
Vedere anche
Riferimento
cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)