Окончание срока действия и отключение подписки
Подписки могут быть деактивированы или могут закончиться сроки их действия, если они не будут синхронизированы в течение определенного срока хранения. Выполняемое действие зависит от типа репликации и от превышенного срока хранения.
Сведения о настройке периодов хранения см. в разделах Установка срока действия для подписок, Установка периода хранения распространения для публикаций транзакций (SQL Server Management Studio) и Настройка публикации и распространения.
репликация транзакций
Репликация транзакций использует максимальный период хранения распределения (параметр @max_distretentionsp_adddistributiondb (Transact-SQL)) и период хранения публикации ( параметр @retentionsp_addpublication (Transact-SQL)):
Если подписка не синхронизирована в пределах максимального срока хранения распространения (по умолчанию 72 часа) и в базе данных распространителя есть изменения, которые не были доставлены подписчику, то подписка будет помечена как деактивированная заданием Очистка распространения , выполняемым на распространителе. Эта подписка должна быть инициализирована повторно.
Если подписка не будет синхронизирована в пределах срока хранения публикации (по умолчанию 336 часов), то срок действия подписки истечет и она будет удалена заданием Очистка истекшей подписки , выполняемым на издателе. Эта подписка должна быть вновь создана и синхронизирована.
Если истекает срок действия принудительной подписки, она полностью удаляется, а подписки по запросу не удаляются. Подписки по запросу должны удаляться на подписчике. Дополнительные сведения см. в статье Delete a Pull Subscription.
Репликация слиянием
Репликация слиянием использует период хранения публикации ( параметры @retention и @retention_period_unitsp_addmergepublication (Transact-SQL)). Когда срок действия подписки истекает, ее необходимо повторно инициализировать, потому что метаданные для этой подписки удаляются. Не инициализированные повторно подписки удаляются заданием Очистка истекшей подписки , выполняемым на издателе. По умолчанию это задание запускается ежедневно; оно удаляет все принудительные подписки, которые не синхронизированы для удвоения срока хранения публикации. Пример:
Допустим, срок хранения публикации равен 14 дням, тогда действие подписки может истечь, если она не будет синхронизирована в течение 14 дней.
Если издатель работает SQL Server 2005 или более поздней версии, а агент для подписки — с SQL Server 2005 или более поздней версии, срок действия подписки истекает только в том случае, если в разделе этой подписки были изменены данные. Например, предположим, что подписчик получает пользовательские данные только для клиентов в Германии. Если срок хранения задан равным 14 дням, срок действия подписки истечет на 14-й день, только если за последние 14 дней не вносились изменения в данные немецких клиентов.
В интервале от 14 до 27 дней после последней синхронизации подписка может быть инициализирована повторно.
Через 28 дней после последней синхронизации подписка удаляется заданием Очистка истекшей подписки . Если истекает срок действия принудительной подписки, она полностью удаляется, а подписки по запросу не удаляются. Подписки по запросу должны удаляться на подписчике. Дополнительные сведения см. в статье Delete a Pull Subscription.
Вопросы установки срока хранения публикации слиянием
При установке срока хранения для публикаций слиянием учитывайте следующие факторы:
Срок хранения для публикаций слиянием содержит 24-часовой льготный период для размещения подписчиков в разных часовых поясах. Например, если установить срок хранения продолжительностью в один день, то действительный срок хранения будет равен 48 часам.
Очистка метаданных репликации слиянием зависит от срока хранения публикации:
Репликации не удастся очистить метаданные в базах данных публикации и подписки, пока не закончится срок хранения. Будьте осмотрительны при указании больших значений срока хранения, так как они могут негативно сказываться на производительности репликации. Рекомендуется использовать небольшие значения, если можно надежно предсказать, что все подписчики будут синхронизироваться регулярно в течение указанного периода времени.
Можно указать бесконечный срок действия подписок (значение «0» параметра @retention), однако настоятельно рекомендуется не использовать это значение, потому что в этом случае метаданные невозможно будет очистить.
Срок хранения, устанавливаемый для любого переиздающего подписчика, не должен превышать срок хранения, заданный для исходного издателя. Для всех издателей и их альтернативных участников синхронизации также следует использовать одинаковые значения срока хранения публикаций. Использование разных значений может привести к несогласованности данных. Если необходимо изменить значение срока хранения публикации, выполните повторную инициализацию подписчика, чтобы избежать несогласованности данных.
Если после очистки срок хранения публикации увеличен и выполняется попытка объединения подписки с издателем (на котором уже удалены метаданные), срок действия подписки не истечет, поскольку было увеличено значение срока хранения. Однако издатель не имеет достаточно метаданных для загрузки изменений на подписчик, что ведет к несогласованности данных.
См. также:
Повторная инициализация подписок
Администрирование агента репликации
Подписка на публикации