Срок действия подписки и деактивация

Подписки могут быть деактивированы или могут истекать, если они не синхронизированы в течение указанного периода хранения. Действие, которое происходит, зависит от типа репликации и превышения срока хранения.

Сведения о настройке периодов хранения см. в разделе "Установка срока действия для подписок", установка периода хранения рассылки для публикаций транзакций (SQL Server Management Studio)и настройка публикации и распространения.

Репликация транзакций

Репликация транзакций использует максимальный период хранения распределения (параметр @max_distretentionsp_adddistributiondb (Transact-SQL)) и период хранения публикации (параметр@retention sp_addpublication (Transact-SQL)):

  • Если подписка не синхронизирована в течение максимального периода удержания дистрибуции (по умолчанию 72 часа) и в базе данных распространения произошли изменения, которые не были доставлены подписчику, подписка будет помечена как деактивированная заданием очистки распределения, которое выполняется на распространителе. Подписка должна быть повторно инициализирована.

  • Если подписка не синхронизирована в течение периода хранения публикации (по умолчанию 336 часов), срок действия подписки истекает и удаляется заданием очистки подписки с истекшим сроком действия, которое выполняется на издателе. Подписка должна быть повторно создана и синхронизирована.

    Если срок действия push-подписки истекает, она полностью удаляется, но подписки на вытягивание не удаляются. Необходимо очистить подписки на вытягивание на подписчике. Дополнительные сведения см. в разделе "Удаление подписки по запросу".

Репликация слиянием

Репликация слиянием использует параметры периода хранения публикации (@retention и @retention_period_unit функции sp_addmergepublication (Transact-SQL)). По истечении срока действия подписки его необходимо повторно инициализировать, так как метаданные для подписки удаляются. Подписки, которые не были переинициализированы, удаляются заданием очистки истекших подписок, выполняемым на издателе. По умолчанию это задание выполняется ежедневно; удаляет все push-подписки, которые не синхронизированы в течение времени, вдвое превышающего период хранения публикации. Рассмотрим пример.

  • Если публикация имеет срок хранения 14 дней, подписка может истекть, если она не синхронизирована в течение 14 дней.

    Если издатель работает под управлением SQL Server 2005 или более поздней версии, а агент для подписки — из SQL Server 2005 или более поздней версии, срок действия подписки истекает, только если в разделе этой подписки были изменены данные. Например, предположим, что подписчик получает данные клиента только для клиентов в Германии. Если срок хранения равен 14 дням, срок действия подписки истекает на 14-й день, только если за последние 14 дней были изменены данные клиента Германии.

  • С 14 дней до 27 дней после последней синхронизации подписку можно повторно инициализировать.

  • Через 28 дней после последней синхронизации подписка удаляется заданием очистка истекших подписок. Если срок действия push-подписки истекает, она полностью удаляется, но подписки на вытягивание не удаляются. Необходимо очистить подписки на pull у подписчика. Дополнительные сведения см. в разделе "Удаление подписки по запросу".

Рекомендации по установке периода хранения для объединяемых публикаций.

При настройке срока хранения публикаций объединения следует учитывать следующие рекомендации.

  • Срок хранения публикаций слиянием имеет 24-часовой льготный период для размещения подписчиков в разных часовых поясах. Например, если задается период хранения в течение одного дня, фактический период хранения составляет 48 часов.

  • Очистка метаданных слияния репликации зависит от периода хранения публикации.

    • Репликация не может очистить метаданные в базах данных публикации и подписки до тех пор, пока не будет достигнут срок хранения. Используйте осторожность при указании высокого значения для периода хранения, так как это может негативно повлиять на производительность репликации. Рекомендуется использовать более низкий параметр, если вы можете надежно предсказать, что все подписчики будут регулярно синхронизироваться в течение этого периода времени.

    • Можно указать, что срок действия подписок никогда не истекает (значение 0 для @retention), но настоятельно рекомендуется не использовать это значение, так как метаданные нельзя очистить.

  • Срок хранения для любой повторной публикации должен иметь значение, равное или меньше периода хранения, заданного на исходном издателе. Кроме того, следует использовать одни и те же значения хранения публикаций для всех издателей и их альтернативных партнеров синхронизации. Использование различных значений может привести к неконвергенции. Если необходимо изменить значение хранения публикации, повторно инициализируйте подписчика, чтобы избежать неконвергенции данных.

  • Если после очистки срок хранения публикации увеличивается, и подписка пытается объединиться с издателем (который уже удалил метаданные), то срок действия подписки не истечет из-за увеличенного периода хранения. Однако у публикатора недостаточно метаданных для передачи изменений подписчику, что приводит к несходимости.

См. также

Повторная инициализация подписок
Администрирование агента репликации
Подписка на публикации