Задание записи CDC завершается сбоем при обработке изменений для таблицы с системным типом данных CLR (geometry, geography или hierarchyid)
Эта статья поможет вам обойти проблему, при которой задание записи CDC завершается сбоем при обработке изменений для таблицы с системным типом данных CLR (geometry, geography или hierarchyid).
Применяется к: SQL Server
Исходный номер базы знаний: 4538384
Симптомы
Рассмотрим следующий сценарий.
- Функция отслеживания измененных данных (CDC) включается в таблице с системным типом данных CLR, например geometry, geography или hierarchyid.
- Задание записи (сканирования) CDC обрабатывает изменения, связанные с другими таблицами. Процесс еще не достиг таблицы с системным типом данных CLR.
- Вы вносите некоторые изменения на языке обработки данных (DML) в таблицу с системным типом данных CLR. Затем вы вносите изменения языка определения данных (DDL) в ту же таблицу (например, добавляете столбец).
В этом сценарии, когда задание записи CDC начинает обработку таблицы с системным типом данных CLR, оно завершается сбоем и возвращает следующее сообщение об ошибке:
Msg 18805, Level 16, State 1, Procedure sp_replcmds, LineLineNumber[Batch Start Line LineNumber ]
Процессу Log-Scan не удалось создать реплицированную команду из номера последовательности журнала (LSN) {nnnnnnnn: nnnnnn: nnnnnn: nnnn}. Создайте резервную копию базы данных публикации и обратитесь в службу поддержки клиентов.
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 в таблицы с типами данных geometry, geography или hierarchyid отсутствуют. Чтобы избежать этой проблемы, выполните следующие действия.
- Заморажив все DML в таблице.
- Запустите задание записи для обработки изменений.
- Запустите DDL для таблицы.
- Запустите задание записи для обработки изменений DDL.
- Повторно включите обработку DML.
Примечание.
Если вы продолжаете сталкиваться с этой проблемой, отключите, а затем снова включите CDC для таблицы.