Проблемы
Предположим, что вы используете репликацию слиянием Microsoft SQL Server 2012 с пакетом обновления 2 (SP2). При очистке метаданных путем выполнения sp_mergemetadataretentioncleanup на издателе невозможно удалить метаданные, даже если все подписчики уже успешно синхронизированы. В этой ситуации время синхронизации может значительно возрасти из-за избыточности метаданных.Примечание. В столбце last_local_recguid есть значение null, либо для некоторых подписчиков в таблице sysmergesubscriptions на стороне издателя имеется старое поколение в столбце last_local_recgen для некоторых абонентов.
Причина
Эта проблема возникает из-за того, что в процедуре очистки метаданных слияния введены некоторые изменения, позволяющие уменьшить вероятность неконвергенции данных. Для этого в ходе очистки проверяется, какие поколения будут активны, чтобы избежать ситуации, когда они удаляются, а затем повторно вводятся с подписчика, который не синхронизируется чаще всего. Этот механизм обнаружения может исключить некоторые поколения из списка очистки, несмотря на то, что они больше не находятся в течение срока хранения. В некоторых случаях это может привести к увеличению размера таблиц метаданных.
Решение
Эта проблема впервые устранена в следующем накопительном обновлении SQL Server.
Накопительное обновление 1 для SQL Server 2014 с пакетом обновления 1 (SP1) /en-us/help/3067839
Накопительное обновление 4 для SQL Server 2012 с пакетом обновления 2 (SP2) /en-us/help/3007556
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".