Подписка на публикацию слиянием, для которой срок действия истек и необходима передача изменений
Если истекает срок подписки на публикацию слиянием и требуется передать изменения с подписчика на издатель, это необходимо сделать вручную.
Объяснение
Репликация слиянием использует срок хранения публикации (параметры @retention и @retention_period_unit хранимой процедуры sp_addmergepublication (Transact-SQL)), чтобы определить, когда истечет срок действия подписки. Репликация очищает метаданные в базах данных публикаций и подписок после того, как окончился срок хранения. Дополнительные сведения см. в разделе Истечение срока действия и отключение подписки. Изменения из подписки с истекшим сроком невозможно передать, так как метаданные, относящиеся к строкам на подписчике, больше не представлены на издателе.
Действия пользователя
Чтобы передать изменения на издатель:
- Используйте программу tablediff, чтобы определить, какие строки различаются между издателем и подписчиком. Сведения об использовании этой программы для реплицированных таблиц см. в разделе How to: Compare Replicated Tables for Differences (Replication Programming).
- Загрузите изменения с подписчика вручную или используя один из следующих методов:
- Создайте подписку заново, указав, что не следует применять моментальный снимок к подписчику. Дополнительные сведения см. в разделе Инициализация подписки на публикацию слиянием без моментального снимка. После того, как подписка создана, выполните мнимое обновление для каждой строки, которая должна быть передана на издатель: или выполните мнимое обновление вручную, например:
UPDATE Sales.SalesOrderHeader SET RevisionNumber = RevisionNumber WHERE SalesOrderID > 4100
или выполните sp_mergedummyupdate для каждой строки. Дополнительные сведения см. в разделе sp_mergedummyupdate (Transact-SQL). - Используйте программу tablediff для создания сценария Transact-SQL, чтобы достичь конвергенции данных. Дополнительные сведения см. в разделе Программа tablediff. Сценарий Transact-SQL переписывает все расходящиеся данные в пункте назначения (в данном случае на издателе), так что этот параметр следует использовать, только если передача данных с подписчика имеет приоритет над сохранением данных на издателе.
- Создайте подписку заново, указав, что не следует применять моментальный снимок к подписчику. Дополнительные сведения см. в разделе Инициализация подписки на публикацию слиянием без моментального снимка. После того, как подписка создана, выполните мнимое обновление для каждой строки, которая должна быть передана на издатель: или выполните мнимое обновление вручную, например: