Инициализация транзакционной подписки из резервной копии (программирование репликации Transact-SQL)

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

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

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

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

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

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

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

    Чтобы избежать потери данных подписчика при использовании sp_addpublication с @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 — это значение для инициализации с резервной копией.

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

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

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

      Для физического устройства укажите полный путь и имя файла, например DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL12.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. (Необязательно) Запустите агент распространителя. Дополнительные сведения см. в разделе "Синхронизация подписки по запросу" или "Синхронизация принудительной подписки".

См. также

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