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


Как повторно инициализировать подписку (программирование репликации на языке Transact-SQL)

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

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

  1. На подписчике в базе данных подписки выполните процедуру sp_reinitpullsubscription (Transact-SQL). Задайте значения для параметров @publisher, @publisher_db и @publication. В результате подписка будет помечена к повторной инициализации при следующем запуске агента распространителя.

  2. (Необязательно) Чтобы синхронизировать подписку, запустите агент распространителя на подписчике. Дополнительные сведения см. в разделе Как синхронизировать подписку по запросу (программирование репликации).

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

  1. На подписчике выполните хранимую процедуру sp_reinitsubscription (Transact-SQL). Укажите значения параметров @publication, @subscriber и @destination_db. В результате подписка будет помечена к повторной инициализации при следующем запуске агента распространителя.

  2. (Необязательно) Чтобы синхронизировать подписку, запустите агент распространителя на распространителе. Дополнительные сведения см. в разделе Как синхронизировать принудительную подписку (программирование репликации).

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

  1. На подписчике в базе данных подписки выполните процедуру sp_reinitmergepullsubscription (Transact-SQL). Задайте значения для параметров @publisher, @publisher_db и @publication. Чтобы передать изменения с подписчика перед повторной инициализацией, задайте значение true в параметре @upload_first. Помечает подписку для повторной инициализации при следующем запуске агента слияния.

    Важное примечаниеВажно!

    Если добавить, удалить или изменить параметризованный фильтр, ожидающие обработки изменения подписчика нельзя будет загрузить на издатель во время повторной инициализации. Если необходимо передать ожидающие обработки изменения, перед изменением фильтра синхронизируйте все подписки.

  2. (Необязательно) Чтобы синхронизировать подписку, запустите агент слияния на подписчике. Дополнительные сведения см. в разделе Как синхронизировать подписку по запросу (программирование репликации).

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

  1. На подписчике выполните хранимую процедуру sp_reinitmergesubscription (Transact-SQL). Задайте значения для параметров @publication, @subscriber и @subscriber_db. Чтобы передать изменения с подписчика перед повторной инициализацией, задайте значение true в параметре @upload_first. В результате подписка будет помечена к повторной инициализации при следующем запуске агента распространителя.

    Важное примечаниеВажно!

    Если добавить, удалить или изменить параметризованный фильтр, ожидающие обработки изменения подписчика нельзя будет загрузить на издатель во время повторной инициализации. Если необходимо передать ожидающие обработки изменения, перед изменением фильтра синхронизируйте все подписки.

  2. (Необязательно) Чтобы синхронизировать подписку, запустите агент слияния на распространителе. Дополнительные сведения см. в разделе Как синхронизировать принудительную подписку (программирование репликации).

Установка политики повторной инициализации при создании публикации слиянием

  • На издателе в базе данных публикации выполните хранимую процедуру sp_addmergepublication, указав одно из следующих значений в параметре @automatic_reinitialization_policy.

    • 1 — изменения передаются с подписчика до автоматической повторной инициализации подписки, выполняемой в результате изменения публикации.

    • 0 — изменения на подписчике отменяются, когда происходит автоматическая повторная инициализация подписки, выполняемая в результате изменения публикации.

    Важное примечаниеВажно!

    Если добавить, удалить или изменить параметризованный фильтр, ожидающие обработки изменения подписчика нельзя будет загрузить на издатель во время повторной инициализации. Если необходимо передать ожидающие обработки изменения, перед изменением фильтра синхронизируйте все подписки.

    Дополнительные сведения см. в разделе Как создать публикацию (программирование репликации на языке Transact-SQL).

Изменение политики повторной инициализации для существующей публикации слиянием

  • На издателе в базе данных публикации выполните хранимую процедуру sp_changemergepublication, указав значение automatic_reinitialization_policy в параметре @property и одно из следующих значений в параметре @value.

    • 1 — изменения передаются с подписчика до автоматической повторной инициализации подписки, выполняемой в результате изменения публикации.

    • 0 — изменения на подписчике отменяются, когда происходит автоматическая повторная инициализация подписки, выполняемая в результате изменения публикации.

    Важное примечаниеВажно!

    Если добавить, удалить или изменить параметризованный фильтр, ожидающие обработки изменения подписчика нельзя будет загрузить на издатель во время повторной инициализации. Если необходимо передать ожидающие обработки изменения, перед изменением фильтра синхронизируйте все подписки.

    Дополнительные сведения см. в разделе Как просмотреть и изменить свойства публикации (программирование репликации на языке Transact-SQL).