KB5008296 - CORREZIONE: L'esecuzione della pulizia dell'acquisizione dei dati di modifica mancante non viene identificata a causa di un deadlock senza un messaggio di errore

Si applica a
SQL Server 2019 on Windows SQL Server 2017 on Windows

Sintomi

Si consideri lo scenario seguente:

  • È possibile usare sp_cdc_cleanup_change_table per gestire il processo di pulizia della tabella delle modifiche.
  • Si verifica un deadlock tra l'analisi di Change Data Capture (CDC) e la pulizia CDC quando viene richiamata sp_cdc_cleanup_change_table .

In questo scenario si verifica il seguente errore 22852 con gravità 10 (messaggio informativo):

Nota

Impossibile eliminare le voci della tabella delle modifiche rese obsolete da una modifica in una o più bozze minime per le istanze di acquisizione del database <DatabaseName>. L'errore si è verificato durante l'esecuzione del comando <CommandName>. L'errore restituito era <ErrorInfo>.

Usare l'azione e l'errore per determinare la causa dell'errore e inviare di nuovo la richiesta.

Avvertenza Poiché si tratta di un messaggio informativo, il processo di pulizia non ha esito negativo 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, alla sp_cdc_cleanup_change_table funzione viene aggiunto un parametro di output facoltativo (bit fCleanupFailed). Può essere utilizzato per verificare se la pulizia delle istanze di acquisizione non riesce. Se l'output fCleanupFailed è 0, tutte le operazioni di pulizia hanno esito positivo. Se è 1, almeno la pulizia di un'istanza di acquisizione non riesce. Ecco un esempio:

-- Declaring a variable and Setting to zero first

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:

Informazioni sugli aggiornamenti cumulativi per SQL Server

Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutte le correzioni a caldo e di sicurezza presenti nella build precedente. È consigliabile installare la build più recente per la versione di SQL Server:

Stato

Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".

Riferimenti

Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.