Инициализация подписки на публикацию транзакций без моментального снимка
По умолчанию инициализация подписки на публикацию транзакций осуществляется с помощью моментального снимка, созданного агентом моментальных снимков и применяемого агентом распространителя. Например, в некоторых сценариях, использующих большие исходные наборы данных, лучше инициализировать подписку другим методом. Другие методы инициализации подписчика:
- Указание резервной копии. Восстановите резервную копию на подписчике, а затем агент распространителя скопирует все необходимые метаданные репликации и системные процедуры. Инициализация с помощью резервной копии — самый быстрый и удобный способ доставки данных на подписчик, поскольку можно использовать любую резервную копию, если она была сделана после включения для базы данных возможности инициализации с помощью резервной копии.
- Копирование первоначального набора данных на подписчик с помощью другого механизма, например присоединения базы данных. Необходимо удостовериться в том, что на подписчике находятся правильные данные и схема, после чего агент распространителя скопирует все необходимые метаданные и системные процедуры.
Инициализация подписки с помощью резервной копии
Резервная копия содержит базу данных целиком, поэтому каждая база данных подписки при инициализации будет содержать полную копию базы данных публикации:
- Резервная копия включает таблицы, не указанные в качестве статей публикации.
- Резервная копия включает все данные, даже если для таблицы указаны фильтры строк или столбцов.
Удаление любых нежелательных объектов и данных после восстановления резервной копии должно выполняться администратором или приложением. При последующих синхронизациях изменения данных реплицируются только в том случае, если они относятся к таблицам, указанным в качестве статей, а изменения соответствуют указанным критериям фильтрации.
Примечание. |
---|
Если необходимо, чтобы подписчик синхронизировался автоматически, при восстановлении резервной копии следует обеспечить то, чтобы резервная копия поступала от издателя. Значения регистрационных номеров транзакций в журнале (LSN), содержащиеся в резервной копии (используемые для определения точки начала синхронизации), специфичны для издателя. |
Инициализация подписки с помощью резервной копии
Чтобы инициализировать подписку с помощью резервной копии, следует включить эту возможность при создании публикации, а затем указать значения нескольких параметров при создании подписки. Публикации можно включить с помощью мастера создания публикаций или программно. Однако указать необходимые значения параметров подписки можно только программно.
- SQL Server Management Studio: Как включить инициализацию из резервной копии для публикаций транзакций (среда SQL Server Management Studio)
- Программирование репликации на Transact-SQL: How to: Initialize a Transactional Subscriber from a Backup (Replication Transact-SQL Programming)
Примечание. |
---|
Если подписка инициализируется без использования моментального снимка, то учетной записи, под которой выполняется служба SQL Server на издателе, должны быть предоставлены разрешения на запись в папку моментальных снимков на распространителе. Дополнительные сведения о разрешениях см. в разделе Модель безопасности агента репликации. |
Обеспечение пригодности резервной копии
Резервная копия пригодна для инициализации подписчика, если все транзакции, происходящие после создания резервной копии, хранятся на распространителе. Если резервная копия непригодна, система репликации выдаст сообщение об ошибке.
Чтобы обеспечить пригодность резервной копии для использования, придерживайтесь следующих рекомендаций:
- Пользуйтесь последней доступной резервной копией, а если последняя резервная копия старше, чем максимальный срок хранения рассылки, создайте новую резервную копию, прежде чем пытаться инициализировать подписку с ее помощью. Дополнительные сведения о сроке хранения см. в разделе Истечение срока действия и отключение подписки.
- По умолчанию задача очистки на распространителе удаляет транзакции старше 72 часов из базы данных распространителя. Очистка основывается на сроке хранения, установленном для публикации. При синхронизации с более старыми резервными копиями рассмотрите возможность временного отключения этого задания перед восстановлением резервной копии и возможность повторного включения после успешного создания подписки. Это предотвращает удаление из базы данных распространителя транзакций, которые могут понадобиться для успешной синхронизации из резервной копии. Дополнительные сведения о выполнении заданий очистки см. в разделе Как запустить задания по обслуживанию репликаций (среда SQL Server Management Studio).
В некоторых случаях после настройки подписок, инициализируемых с помощью резервной копии, следует вручную выполнить настройки в восстановленной базе данных подписчика. В общем случае внесение изменений вручную в восстановленную базу данных подписчика требуется, если публикация определена таким образом, что допускается отличие содержимого базы данных подписчика от содержимого базы данных издателя.
- Индексированные представления в восстановленной базе данных должны быть преобразованы в таблицы, если они публикуются как статьи таблиц, полученных из индексированных представлений на основе журнала операций.
- Входящие в подписку столбцы типа timestamp в восстановленной базе данных должны быть преобразованы в столбцы типа binary(8): скопируйте содержимое таблиц, содержащих столбцы типа timestamp, в новые таблицы, имеющие те же схемы, за исключением того, что вместо столбцов типа timestamp они содержат столбцы типа binary(8), удалите исходные таблицы и присвойте новым таблицам имена исходных таблиц.
Инициализация подписки альтернативным способом
Подписку можно инициализировать любым методом, позволяющим скопировать на подписчик схему и данные базы данных публикации, например службы Integration Services. При использовании для инициализации подписчика альтернативного метода объекты поддержки репликации копируются на подписчик.
В отличие от инициализации, с помощью резервной копии необходимо обеспечить то, чтобы данные и схема были должным образом синхронизированы во время добавления подписки. Например, если между моментом копирования данных и схемы в подписчик и моментом добавления подписки издатель активен, то изменения данных, которые произошли в результате этой активности, могут не реплицироваться в подписчик.
Инициализация подписки альтернативным способом
- SQL Server Management Studio: Как инициализировать подписку вручную (среда SQL Server Management Studio)
- Программирование репликации на Transact-SQL: How to: Initialize a Subscription Manually (Replication Transact-SQL Programming)