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