Sintomi
Considerare lo scenario descritto di seguito:
-
È possibile usare sp_cdc_cleanup_change_table per gestire il processo di pulizia della tabella delle modifiche.
-
Si verifica un deadlock tra l'analisi change data capture (CDC) e la pulizia CDC quando sp_cdc_cleanup_change_table viene richiamato.
In questo scenario si verifica l'errore 22852 con gravità 10 (messaggio informativo):
Non è stato possibile eliminare le voci della tabella delle modifiche rese obsolete da una modifica in uno o più indicatori di acqua bassi per l'acquisizione di istanze del database <DatabaseName>. L'errore si è verificato durante l'esecuzione del comando <CommandName> . L'errore restituito è <errorInfo> .
Usare l'azione e l'errore per determinare la causa dell'errore e inviare di nuovo la richiesta.
NotaPoiché si tratta di un messaggio informativo, il processo di pulizia non riesce e non è possibile determinare se la pulizia ha esito positivo o negativo.
Dettagli sulla correzione
Per determinare se la pulizia ha esito positivo o negativo quando si usa sp_cdc_cleanup_change_table, viene aggiunto un parametro di output facoltativo (bit fCleanupFailed) alla funzione sp_cdc_cleanup_change_table. Può essere usato per verificare se la pulizia di tutte le istanze di acquisizione ha esito negativo. Se l'output di fCleanupFailed è 0, tutta la pulizia ha esito positivo. Se è 1, almeno la pulizia di un'istanza di acquisizione non riesce. Ecco un esempio:
-- Dichiarazione di una variabile e impostazione su zero prima
select @cleanup_failed_bit = 0
--Execute cleanup and obtain output bit
EXEC @retcode =sys.sp_cdc_cleanup_change_table
@capture_instance = '<CaptureInstance>',
@low_water_mark = @LSN,
@threshold = 1 ,
@fCleanupFailed = @cleanup_failed_bit output
--Leverage @cleanup_failed_bit output to check the status.
Risoluzione
Questo problema è stato risolto negli aggiornamenti cumulativi seguenti per SQL Server:
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli aggiornamenti rapidi e le correzioni di sicurezza presenti nella build precedente. È consigliabile installare la build più recente per la versione di SQL Server:
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia usata da Microsoft per descrivere gli aggiornamenti software.