Symptomy
Rozpatrzmy następujący scenariusz:
-
Za pomocą sp_cdc_cleanup_change_table zarządzasz procesem oczyszczania tabeli zmian.
-
Podczas wywoływania aktualizacji występuje kłódka między skanowaniem przechwytywania danych zmian (CDC, Change Data Capture) a oczyszczaniem sp_cdc_cleanup_change_table CDC .
W tym scenariuszu występuje następujący błąd 22852 o ważności 10 (komunikat informacyjny):
Nie można usunąć przestarzałych wpisów tabeli przez zmianę w co najmniej jednym znaczniku niskiej wody dla wystąpień przechwycenia bazy danych w <DatabaseName>. Błąd wystąpił podczas wykonywania polecenia nazwa_<nazwa_>. Zwrócono błąd podczas <ErrorInfo> .
Użyj akcji i błędu, aby ustalić przyczynę niepowodzenia i ponownie przesłać żądanie.
Uwaga Ponieważ jest to komunikat informacyjny, proces oczyszczania nie kończy się niepowodzeniem i nie ma żadnego sposobu na ustalenie, czy oczyszczanie się powiedzie, czy nie.
Szczegóły dotyczące poprawki
Aby określić, czy oczyszczanie zakończy się powodzeniem lub niepowodzeniem w przypadku używania programu sp_cdc_cleanup_change_table, do funkcji sp_cdc_cleanup_change_table dodawany jest opcjonalny parametr wyjściowy (fCleanupFailed bit). Dzięki temu można sprawdzić, czy oczyszczanie wszystkich wystąpień przechwytywania kończy się niepowodzeniem. Jeśli fCleanupFailed wyjściowa wynosi 0, całe oczyszczanie zakończy się powodzeniem. Jeśli jest to 1, co najmniej oczyszczanie jednego wystąpienia przechwytywania kończy się niepowodzeniem. Oto przykład:
-- Deklarowanie zmiennej i ustawienie na początku wartości zero
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.
Rozwiązanie
Ten problem został rozwiązany w następujących aktualizacjach skumulowanych dla SQL Server:
Każda nowa aktualizacja skumulowana SQL Server zawiera wszystkie poprawki i poprawki zabezpieczeń, które były w poprzedniej kompilacji. Zalecamy zainstalowanie najnowszej kompilacji dla wersji pakietu SQL Server:
Stan
Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".
Informacje
Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.