Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Срок действия подписки на публикацию слиянием истекает, если она не синхронизирована с издателем в течение срока хранения публикации. Срок хранения по умолчанию — 14 дней. Он задается с помощью параметров @retention
и @retention_period_unit
sp_addmergepublication. Требуется, чтобы @retention_period_unit
имел уровень совместимости публикации 90RTM или выше. Для подписчиков, работающих в предыдущих версиях Microsoft SQL Server, @retention_period_unit
всегда задано значение day
. Дополнительные сведения о уровне совместимости см. в разделе "Уровень совместимости для публикаций слиянием" статьи "Использование нескольких версий SQL Server в топологии репликации".
По истечении срока действия подписки его необходимо повторно инициализировать, так как метаданные для подписки удаляются. Дополнительные сведения см. в разделе "Очистка метаданных". Подписки, которые не были повторно инициализированы, удаляются заданием очистки истёкших подписок, выполняемым на издателе. По умолчанию это задание выполняется ежедневно; оно удаляет все push-подписки, которые не синхронизированы в течение двойной продолжительности периода хранения публикации. Рассмотрим пример.
Если публикация имеет срок хранения 14 дней, подписка может истекть, если она не синхронизирована в течение 14 дней.
Срок действия подписки истекает только в том случае, если в разделе этой подписки были изменены данные. Например, предположим, что подписчик получает данные клиента только для клиентов в Германии. Если срок хранения равен 14 дням, срок действия подписки истекает на 14 день только в том случае, если данные клиента из этого региона были изменены за последние 14 дней.
С 14 дней до 27 дней после последней синхронизации подписку можно повторно инициализировать.
Через 28 дней после последней синхронизации подписка удаляется заданием очистки подписки с истекшим сроком действия. Если срок действия push-подписки истекает, они полностью удаляются, но pull-подписки не удаляются. Необходимо очистить подписки на вытягивание на подписчике. Дополнительные сведения см. в разделе "Удаление подписки по запросу".
Рекомендации по настройке срока хранения публикации
При настройке срока хранения публикаций объединения следует учитывать следующие рекомендации.
Очистка метаданных слияния репликации зависит от периода хранения публикации.
Репликация не может очистить метаданные в базах данных публикации и подписки до тех пор, пока не будет достигнут период хранения. Используйте осторожность при указании высокого значения периода хранения, так как это может негативно повлиять на производительность репликации. Вы должны использовать более низкий параметр, если вы можете надежно предсказать, что все подписчики будут регулярно синхронизироваться в течение этого периода времени.
Можно указать, что срок действия подписок не истекает (значение 0 для
@retention
), но не следует использовать это значение, так как метаданные не могут быть удалены.
Срок хранения для любой повторной публикации должен иметь значение, равное или меньше периода хранения, заданного на исходном издателе. При использовании альтернативных партнеров синхронизации следует использовать те же значения хранения публикации для издателей и всех альтернативных партнеров синхронизации. Использование различных значений может привести к неконвергенции. Если необходимо изменить значение хранения публикации, повторно инициализируйте подписчика, чтобы избежать неконвергенции данных.
Если после очистки срок хранения публикации увеличивается, а подписка пытается объединиться с издателем (который уже удалил метаданные), срок действия подписки не истекает из-за увеличенного срока хранения. Однако у издателя недостаточно метаданных для скачивания изменений для подписчика, что приводит к несходимости.
Очистка метаданных
Очистка метаданных в репликации слиянием выполняется хранимой процедурой sp_mergemetadataretentioncleanup. Сроки очистки основаны на периоде хранения публикации. Каждый раз, когда агент слияния запускается для подписки, он вызывает процедуру очистки. Процедура удаляет метаданные старше периода хранения публикации из следующих системных таблиц:
- MSmerge_contents
- MSmerge_tombstone
- MSmerge_genhistory
- MSmerge_current_partition_mappings
- MSmerge_past_partition_mappings
- MSmerge_generation_partition_mappings
Эти таблицы используются всеми публикациями в базе данных публикации: если существует несколько публикаций, самый длинный период хранения всегда используется для определения возможности удаления метаданных.