Проблема
Предположим, что у вас есть одноранговая (P2P) или транзакционная репликация в секционированных таблицах в Microsoft SQL Server. При переключении разделов или операции слияния с ожидающими реплицированными командами в этом разделе вы замечаете следующую запись об ошибке в журнале ошибок SQL Server:
Примечание
Ошибка 608: в базе данных <DatabaseName> не найдена запись каталога для идентификатора> идентификатора раздела<. Метаданные не согласованы. Запустите DBCC CHECKDB для проверки на наличие повреждения метаданных.
Кроме того, агент средства чтения журнала создает дамп нарушения прав доступа.
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Решение
Эта проблема устранена в следующих накопительных обновлениях для SQL Server:
- Накопительный пакет обновления 9 для SQL Server 2019
- Накопительный пакет обновления 23 для SQL Server 2017
- Накопительный пакет обновления 14 для SQL Server 2016 с пакетом обновления 2 (SP2)
Примечание После применения этого исправления, если вы выполняете переключение или слияние разделов с ожидающими реплицированными командами в этом разделе, вы по-прежнему будете наблюдать ошибку 608 в журнале ошибок SQL Server, но не дампы нарушений доступа.
Сведения о накопительных обновлениях для SQL Server:
Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server:
- Последний накопительный пакет обновления для SQL Server 2019
- Последний накопительный пакет обновления для SQL Server 2019
- Последний накопительный пакет обновления для SQL Server 2016
Дополнительные сведения
Если включить переключение разделов на SQL Server 2008 R2 до текущей версии, в ближайшем будущем также могут потребоваться операции разделения и объединения. Прежде чем выполнять операцию разделения или слияния в реплицированной таблице, убедитесь, что в рассматриваемом разделе нет ожидающих реплицированных команд. Вы также должны убедиться, что никакие операции DML не выполняются в разделе во время операций разделения и слияния. Если существуют транзакции, которые средство чтения журнала не обработало, или если операции DML выполняются в разделе реплицированной таблицы при выполнении операции разделения или слияния (с участием одного и того же раздела), это может привести к ошибке обработки агентом средства чтения журнала. Чтобы исправить ошибку, может потребоваться повторная инициализация подписки.
Дополнительные сведения см. в статье Репликация секционированных таблиц и индексов.
Внимание!
Не следует включать переключение разделов для одноранговых публикаций из-за скрытого столбца, используемого для обнаружения и разрешения конфликтов.
Ссылки
Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.