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

Применимо к:SQL Server

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

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

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

    • Если оно равно 1, то публикация поддерживает данную функцию.

    • Если значение равно 0, выполните sp_changepublication (Transact-SQL) на издателе в базе данных публикации. В параметре allow_initialize_from_backup укажите значение @property, а в параметре @value — значение true.

  2. Для новой публикации выполните sp_addpublication (Transact-SQL) на издателе в базе данных публикации. Задайте значение true для параметра allow_initialize_from_backup. Дополнительные сведения см. в разделе Create a Publication.

    Предупреждение

    Чтобы предотвратить отсутствие данных подписчика, при использовании процедуры sp_addpublication или sp_changepublication с @allow_initialize_from_backup = N'true' всегда используйте @immediate_sync = N'true'.

  3. Создайте резервную копию базы данных публикации с помощью инструкции BACKUP (Transact-SQL).

  4. Восстановите резервную копию на подписчике с помощью инструкции RESTORE (Transact-SQL).

  5. На издателе в базе данных публикации выполните хранимую процедуру sp_addsubscription (Transact-SQL). Укажите следующие параметры:

    • @sync_type — значение параметра initialize with backup.

    • @backupdevicetype — тип устройства резервного копирования: logical (по умолчанию), disk или tape.

    • @backupdevicename — логическое или физическое устройство резервного копирования, с которого будет производиться восстановление.

      Для логического устройства задайте имя устройства резервного копирования, указанное при создании устройства при помощи хранимой процедуры sp_addumpdevice .

      Для физического устройства укажите полный путь и имя файла, например: DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\BACKUP\Mybackup.dat' или TAPE = '\\.\TAPE0'.

    • (Необязательно) @password — пароль, заданный во время сеанса создания резервного набора данных.

    • (Необязательно) @mediapassword — пароль, заданный во время сеанса форматирования набора носителей.

    • (Необязательно) @fileidhint — идентификатор восстанавливаемой резервной копии. Например, значение 1 указывает первый резервный набор данных на носителе данных резервных копий, а значение 2 — второй резервный набор данных.

    • (Для ленточных устройств необязательно.) @unload — если после завершения сеанса восстановления необходимо извлечь ленту из устройства считывания, укажите значение 1 (по умолчанию), в противном случае — значение 0.

  6. (Необязательно) Для подписки на вытягивание выполните sp_addpullsubscription (Transact-SQL) и sp_addpullsubscription_agent (Transact-SQL) на подписчике в базе данных подписки. Дополнительные сведения см. в статье Создание подписки по запросу.

  7. (Необязательно) Запустите агент распространителя. Дополнительные сведения см. в разделе Synchronize a Pull Subscription или Synchronize a Push Subscription.

См. также

Копирование баз данных путем создания и восстановления резервных копий
Резервное копирование и восстановление баз данных SQL Server