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