Поделиться через


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

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

Объяснение

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

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

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

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

См. также

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

Диагностика при репликации

Справка и поддержка

Получение помощи по SQL Server 2005