Задание записи CDC завершается сбоем при обработке изменений для таблицы с типом данных system CLR (geometry, geography или hierarchyid)
Эта статья помогает обойти проблему, когда задание записи CDC завершается сбоем при обработке изменений для таблицы с типом данных system CLR (geometry, geography или hierarchyid).
Применяется к: SQL Server
Исходный номер базы знаний: 4538384
Симптомы
Рассмотрим следующий сценарий:
- Функция отслеживания измененных данных (CDC) включена в таблицу с типом данных CLR системы, например geometry, geography или hierarchyid.
- Задание записи CDC (сканирование) обрабатывает изменения, связанные с другими таблицами. Процесс еще не достиг таблицы с системным типом данных CLR.
- Вы вносите некоторые изменения языка обработки данных (DML) в таблицу с системным типом данных CLR. Затем вы вносите изменения языка определения данных (DDL) в той же таблице (например, вы добавляете столбец).
В этом сценарии, когда задание записи CDC начинает обработку таблицы с типом данных system CLR, она завершается ошибкой и возвращает следующее сообщение об ошибке:
Msg 18805, level 16, State 1, Procedure sp_replcmds, LineLineNumber[Batch Start LineNumber ]
Не удалось создать реплицированную команду из номера последовательности журнала (LSN) {nn: nn: nnnnnnnn: nnnnnn}. Выполните резервное копирование базы данных публикации и свяжитесь со службой поддержки пользователей.
Msg 22859, Level 16, State 2, Procedure sp_replcmds, LineNumber [Batch Start LineNumber ]
Процессу просмотра журнала не удалось обработать записи журнала. Чтобы определить причину и устранить связанные с ней проблемы, см. ошибки, выданные ранее в текущем сеансе.
Msg 3621, Level 16, State 6, Procedure sp_replcmds, LineNumber [Batch Start LineNumber ]
Выполнение данной инструкции было прервано.
Msg 22864, Level 16, State 1, Procedure sp_MScdc_capture_job, LineNumber[Batch Start LineNumber ]
Сбой вызова sp_MScdc_capture_job заданием записи для базы данных DatabaseName. Чтобы определить причину сбоя, просмотрите предыдущие ошибки.
Кроме того, в журнал ошибок может входить следующая запись:
Ошибка: 913, серьезность: 16, состояние: 16. Не удалось найти идентификатор базы данных. База данных может быть еще не активирована либо может находиться в процессе перехода. Повторите запрос после того, как база данных станет доступной. Если вы не считаете, что эта ошибка связана с базой данных, которая перемещает его состояние, и эта ошибка продолжает возникать.
Дополнительная информация
Эта проблема не возникает, если задание записи CDC изначально обрабатывает только DML, а затем обрабатывает изменение DDL при следующем запуске.
Обходное решение
Чтобы обойти эту проблему, попробуйте один из следующих методов:
Избегайте использования проблемных типов данных (geometry, geography, hierarchyid) вместе с CDC.
Убедитесь, что при внесении изменений DDL в таблицах с геометрическими, географическими или иерархическими типами данных нет изменений DML. Чтобы избежать этой проблемы, выполните следующие действия.
- Quiesce all DML to the table.
- Выполните задание записи для обработки изменений.
- Запустите DDL для таблицы.
- Запустите задание записи для обработки изменений DDL.
- Повторно включите обработку DML.
Примечание.
Если вы продолжаете сталкиваться с этой проблемой, отключите и повторно включите CDC в таблице.