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 (информационное сообщение):

Примечание

Не удалось удалить записи таблицы изменений, которые устарели в результате изменения одной или нескольких меток с низким уровнем воды для экземпляров записи database <DatabaseName>. Ошибка произошла при выполнении команды <CommandName>. Возвращена < ошибка ErrorInfo>.

Используйте действие и ошибку, чтобы определить причину сбоя и повторно отправить запрос.

Примечание Так как это информационное сообщение, процесс очистки не завершается сбоем, и невозможно определить, является ли очистка успешной или сбой.

Сведения об исправлении

Чтобы определить, успешно ли выполняется очистка при использовании sp_cdc_cleanup_change_table, в функцию sp_cdc_cleanup_change_table добавляется необязательный выходной параметр (fCleanupFailed bit). Это можно использовать для проверка, если очистка любых экземпляров записи завершается ошибкой. Если выходные данные 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, перечисленных в разделе «Относится к».

Ссылки

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