Проблемы
Рассмотрим следующий сценарий.
-
Вы sp_cdc_cleanup_change_table для управления процессом очистки таблицы.
-
При вызове sp_cdc_cleanup_change_table возникает запамятие между сканированием данных (CDC ) и очисткой CDC.
В этом сценарии возникает следующая ошибка 22852 со степенью важности 10 (информационное сообщение):
Не удалось удалить элементы таблицы, которые устарели из-за изменения в одной или несколько низких меток воды для экземпляров захвата базы данных <Имя базы>. Сбой произошел при выполнении команды <CommandName>. Возвращаемая ошибка была <ErrorInfo>.
Используйте действие и ошибку, чтобы определить причину сбоя и повторно разопросить запрос.
Примечание. Так как это информационное сообщение, процесс очистки не сбой, а также нет способа определить, будет ли очистка успешной или не удалась.
Сведения об исправлении
Чтобы определить успешность очистки при использовании sp_cdc_cleanup_change_table, в функцию sp_cdc_cleanup_change_table добавляется необязательный выходной параметр (fCleanupFailed bit). Это можно использовать для проверки сбой очистки всех экземпляров захвата. Если результат fCleanupFailed — 0, очистка будет успешной. Если это 1, по крайней мере, очистка одного экземпляра захвата не удастся. Вот пример:
— объявление переменной и значение "Установить для нуля"
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.
Решение
Эта проблема устранена в следующих накопительных обновлениях для SQL Server:
Каждое новое накопительное обновление SQL Server содержит все исправления, которые были в предыдущей сборке. Рекомендуем установить последнюю сборку для своей версии SQL Server:
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.