Подписка на публикацию слиянием, для которой срок действия истек и необходима передача изменений

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

Объяснение

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

Действия пользователя

Чтобы передать изменения на издатель:

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

  2. Загрузите изменения с подписчика вручную или используя один из следующих методов:

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

      UPDATE Sales.SalesOrderHeader SET RevisionNumber = RevisionNumber WHERE SalesOrderID > 4100

      или выполните sp_mergedummyupdate для каждой строки. Дополнительные сведения см. в разделе sp_mergedummyupdate (Transact-SQL).

    • Используйте программу tablediff для создания сценария Transact-SQL, чтобы достичь конвергенции данных. Дополнительные сведения см. в разделе Программа tablediff. Сценарий Transact-SQL переписывает все расходящиеся данные в пункте назначения (в данном случае на издателе), так что этот параметр следует использовать, только если передача данных с подписчика имеет приоритет над сохранением данных на издателе.

См. также

Основные понятия