KB5008296 — ИСПРАВЛЕНО: выполнение очистки с отсутствующими изменениями не определяется из-за взаимоблокировки без сообщения об ошибке

Применяется к
SQL Server 2019 on Windows SQL Server 2017 on Windows

Проблема

Рассмотрим следующий сценарий.

  • Вы используете 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:

Сведения о накопительных обновлениях для SQL Server

Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые были в предыдущей сборке. Рекомендуется установить последнюю сборку для вашей версии SQL Server.

Состояние

Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».

Ссылки

Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.