Синхронизация данных

Область применения: SQL Server Управляемый экземпляр SQL Azure

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

  • Непрерывно, что типично для репликации транзакций.

  • По запросу, что типично для репликации слиянием.

  • По расписанию, что характерно для репликации снимков.

Когда подписка синхронизируется, в зависимости от используемого типа репликации происходят разные процессы:

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

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

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

  • Репликация слиянием. Синхронизация означает, что агент слияния сначала передает изменения от Подписчика к Издателю, а затем — от Издателя к Подписчику. Конфликты, если они присутствуют, обнаруживаются и разрешаются. Выполняется конвергенция данных, а издатель и все подписчики в итоге достигают состояния с одинаковыми значениями данных. Если были обнаружены и разрешены конфликты, работа, зафиксированная некоторыми из пользователей, изменяется, чтобы разрешить конфликт в соответствии с определенными правилами.

Публикации снимков при каждой синхронизации полностью пересоздают схему на Подписчике, поэтому к Подписчику применяются все изменения схемы. Транзакционная репликация и репликация слиянием также поддерживают наиболее распространенные изменения в схеме. Дополнительные сведения см. в статье Внесение изменений в схемы баз данных публикации.

Сведения о синхронизации принудительной подписки см. в разделе Synchronize a Push Subscription.

Сведения о синхронизации подписки по запросу см. в разделе Synchronize a Pull Subscription.

Чтобы настроить расписания синхронизации, см. раздел Specify Synchronization Schedules.

Просмотреть и разрешить конфликты синхронизации

Выполнение кода во время синхронизации

Репликация поддерживает два метода выполнения кода во время синхронизации

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

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