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


Инициализация подписки вручную

В этом разделе описывается, как инициализировать подписку вручную в SQL Server 2014 с помощью SQL Server Management Studio или Transact-SQL. Хотя начальный моментальный снимок обычно используется для инициализации подписки, подписку можно инициализировать без использования моментального снимка, при условии, что схема базы данных и начальные данные уже присутствуют у подписчика.

Перед началом работы

Ограничения и условия

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

Использование среды SQL Server Management Studio

Инициализировать подписку на публикацию вручную путем копирования схемы (и обычно данных) в базу данных подписки. Схема и данные должны соответствовать базе данных публикации. Затем укажите, что подписка не требует схемы и данных на странице Initialize Subscriptions мастера создания новой подписки. Дополнительные сведения о доступе к этому мастеру см. в разделах «Инициализация транзакционной подписки без моментального снимка» и «Создание подписки с вытягиванием».

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

Инициализация подписки на публикацию вручную

  1. Убедитесь, что схема и данные копируются в базу данных подписки.

  2. Снимите флажок "Инициализация подписок" на странице "Инициализация подписок " мастера создания подписок. Сделайте это для каждой подписки, где необходимо копировать лишь объекты репликации и метаданные.

Использование Transact-SQL

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

Для ручной инициализации pull-подписки на публикацию транзакций

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

  2. На сервере издателя в базе данных публикации выполните sp_addsubscription. Укажите @publication, @subscriber, имя базы данных на подписчике, содержащей опубликованные данные для @destination_db, значение "pull" для @subscription_type и значение "только поддержка репликации" для @sync_type. Дополнительные сведения см. в статье Создание подписки по запросу.

  3. На подписчике выполните sp_addpullsubscription. Сведения об обновлении подписок см. в статье "Создание обновляемой подписки на публикацию транзакций".

  4. На подписчике выполните sp_addpullsubscription_agent. Дополнительные сведения см. в статье Создание подписки по запросу.

  5. Запустите агент распространителя для передачи объектов репликации и скачайте последние изменения с издателя. Дополнительные сведения см. в разделе "Синхронизация подписки по запросу".

Чтобы вручную инициализировать push-подписку на транзакционную публикацию

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

  2. На сервере издателя в базе данных публикации выполните sp_addsubscription. Укажите имя базы данных на подписчике, которая содержит опубликованные данные для @destination_db, значение push для @subscription_type и значение только для поддержки репликации для @sync_type. Сведения об обновлении подписок см. в статье "Создание обновляемой подписки на публикацию транзакций".

  3. На сервере издателя в базе данных публикации выполните sp_addpushsubscription_agent. Дополнительные сведения см. в статье Создание принудительной подписки.

  4. Запустите агент распространителя для передачи объектов репликации и скачайте последние изменения с издателя. Дополнительные сведения см. в разделе "Синхронизация принудительной подписки".

Для ручной инициализации подписки с вытягиванием на публикацию с объединением

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

  2. Для издателя выполните sp_addmergesubscription. Укажите @publication, @subscriber, @subscriber_db и значение pull для @subscription_type. При этом регистрируется подписка на получение.

  3. На базе данных подписчика, содержащей опубликованные данные, выполните sp_addmergepullsubscription. Укажите значение none для @sync_type.

  4. Выполните процедуру sp_addmergepullsubscription_agentна подписчике. Дополнительные сведения см. в статье Создание подписки по запросу.

  5. Запустите агент слияния для передачи объектов репликации и скачайте последние изменения с издателя. Дополнительные сведения см. в разделе "Синхронизация подписки по запросу".

Вручную инициализировать push-подписку на публикацию слияния

  1. Убедитесь, что схема и данные существуют в базе данных подписки. Это можно сделать, восстановив резервную копию базы данных публикации на подписчике.

  2. На издателе в базе данных публикации выполните sp_addmergesubscription. Укажите имя базы данных на подписчике, содержащую опубликованные данные для @subscriber_db, значение push для @subscription_type и значение none для @sync_type.

  3. На издателе в базе данных публикации выполните sp_addmergepushsubscription_agent. Дополнительные сведения см. в статье Создание принудительной подписки.

  4. Запустите агент слияния для передачи объектов репликации и скачайте последние изменения с издателя. Дополнительные сведения см. в разделе "Синхронизация принудительной подписки".

См. также

Инициализация транзакционной подписки без моментального снимка
Резервное копирование и восстановление реплицированных баз данных
Рекомендации по обеспечению безопасности репликации