Принцип работы репликации моментальных снимков

По умолчанию все три типа репликации для инициализации подписчиков используют моментальный снимок. Агент моментальных снимков SQL Server всегда создает файлы моментальных снимков, но агент, доставляющий файлы, меняется в зависимости от используемого типа репликации. Репликация моментальных снимков и репликация транзакций используют для доставки этих файлов агент распространителя, в то время как репликация слиянием использует агент слияния SQL Server. Агент моментальных снимков выполняется на распространителе. Агент распространителя и агент слияния выполняются на распространителе для принудительных подписок и на подписчиках для подписок по запросу. Дополнительные сведения о принудительных подписках и подписках по запросу см. в разделе Подписка на публикации. Дополнительные сведения об агентах см. в разделе Обзор агентов репликации.

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

ПримечаниеПримечание

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

На следующей иллюстрации показаны основные компоненты репликации моментальных снимков.

Компоненты репликации моментальных снимков и поток данных

Агент моментальных снимков

Для репликации слиянием моментальный снимок создается при каждом запуске агента моментальных снимков. При репликации транзакций формирование моментального снимка зависит от настроек свойства публикации immediate_sync. Если значение свойства установлено в TRUE (значение по умолчанию при использовании мастера создания публикаций), то моментальный снимок формируется при каждом запуске агента моментальных снимков и может быть в любое время применен к подписчику. Если значение свойства установлено в FALSE (значение по умолчанию при использовании sp_addpublication), то моментальный снимок формируется только в том случае, если после запуска агента моментальных снимков была добавлена новая подписка; для проведения синхронизации подписчики должны ждать завершения работы агента моментальных снимков.

Агент моментальных снимков выполняет следующие шаги:

  1. Устанавливает соединение распространителя с издателем, а затем, если это необходимо, блокирует публикуемые таблицы:

    • Для публикаций слиянием агент моментальных снимков не устанавливает никаких блокировок.

    • Для публикаций транзакций агент моментальных снимков по умолчанию устанавливает блокировки только на начальной фазе формирования моментального снимка.

    • Для публикаций моментальных снимков блокировки удерживаются на всем протяжении процесса формирования моментального снимка.

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

  3. Копирует данные из опубликованной таблицы на издателе и записывает данные в папку моментальных снимков. Моментальный снимок формируется как набор файлов программы массового копирования (BCP).

  4. Для публикаций моментальных снимков и публикаций транзакций агент моментальных снимков присоединяет строки к таблицам MSrepl_commands и MSrepl_transactions в базе данных распространителя. Записи в таблице MSrepl_commands представляют собой команды, указывающие местонахождение sch- и bcp-файлов, а также любых других файлов моментального снимка и ссылки на любые сценарии, выполняемые до или после моментального снимка. Записи в таблице MSrepl_transactions представляют собой команды, относящиеся к синхронизации подписчика.

    Для публикаций слиянием агент моментальных снимков выполняет дополнительные шаги. Дополнительные сведения см. в разделе Как репликация слиянием инициализирует публикации и подписки.

  5. Снимает любые блокировки с опубликованных таблиц.

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

Агент распространителя и агент слияния

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

В случае репликации моментальных снимков и репликации транзакций агент распространителя выполняет следующие шаги:

  1. Устанавливает соединение с распространителем.

  2. Анализирует таблицы MSrepl_commands и MSrepl_transactions в базе данных распространителя на распространителе. Агент считывает местонахождение файлов моментального снимка из первой таблицы и команды синхронизации подписчика из обеих таблиц.

  3. Применяет схему и команды к базе данных подписки.

В случае отсутствия фильтрации для публикации репликации слиянием агент слияния выполняет следующие шаги:

  1. Устанавливает соединение с издателем.

  2. Анализирует таблицу sysmergeschemachange на издателе и определяет, существует ли новый моментальный снимок, который следует применить на подписчике.

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