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


Добавление и удаление статей в существующих публикациях

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

Добавление статей

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

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

Если при добавлении статьи в публикацию слиянием, существующая статья зависит от новой статьи, то необходимо задать порядок обработки для обеих статей с помощью параметра @processing_order процедур sp_addmergearticle и sp_changemergearticle. Рассмотрим следующий сценарий: необходимо опубликовать таблицу без опубликования функции, на которую ссылается эта таблица. Если функция не будет опубликована, то таблица не сможет быть создана на подписчике. При добавлении функции к публикации: задайте значение 1 для параметра @processing_order процедуры sp_addmergearticle и значение 2 для параметра @processing_order процедуры sp_changemergearticle, указав имя таблицы для параметра @article. Этот порядок обработки гарантирует создание функции на подписчике до создания таблицы, которая зависит от нее. Можно использовать различные числа для каждой статьи при условии, что число для функции меньше числа для таблицы.

  1. Добавьте одну или несколько статей с помощью следующих методов:

  2. После добавления статьи в публикацию необходимо создать новый моментальный снимок для публикации (и все секции, если это публикация слиянием с параметризованными фильтрами). Затем агент распространителя или агент слияния копирует схему и данные для новой статьи на подписчик (он не инициализирует заново всю публикацию).

    Создание моментального снимка

    Создание моментального снимка для публикации слиянием с параметризованными фильтрами

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

    Синхронизация принудительной подписки

    Синхронизация подписки по запросу

Удаление статей

Статьи могут быть удалены из публикации в любое время, но следует принять во внимание следующие аспекты:

  • Удаление статьи из публикации не удаляет объект из базы данных публикации или соответствующий объект из базы данных подписки. Используйте DROP <объект> для удаления этих объектов при необходимости. При удалении статьи, которая связана с другими опубликованными статьями с помощью ограничений внешних ключей, рекомендуется удалить таблицу на подписчике вручную или выполнив сценарий по требованию: укажите сценарий, который содержит соответствующие инструкции DROP <объект>. Дополнительные сведения см. в разделе Как выполнять сценарии во время синхронизации (программирование репликации на языке Transact-SQL).

  • Для публикации слиянием с уровнем совместимости 90RTM и выше возможно удаление статей в любое время, но требуется новый моментальный снимок. Дополнительно:

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

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

  • Для публикаций слиянием с уровнем совместимости ниже 90RTM статьи можно удалить без особых размышлений до первоначальной синхронизации подписок. Если статья удалена после синхронизации одной или более подписок, подписки должны быть удалены, заново созданы и синхронизированы. Дополнительные сведения об уровне совместимости см. в подразделе «Уровень совместимости для публикаций слиянием» раздела Использование нескольких версий SQL Server в топологии репликации.

  • Для публикации моментальных снимков или публикации транзакций статьи можно удалить без особых размышлений до создания подписок. Если статья удалена после создания одной или более подписок, подписки должны быть удалены, заново созданы и синхронизированы. Дополнительные сведения об удалении подписок см. в разделе Подписка на публикации и sp_dropsubscription (Transact-SQL). Хранимая процедура sp_dropsubscription позволяет удалить одну статью из подписки вместо удаления всей подписки.

  1. Удаление статьи из публикации включает удаление статьи и создание нового моментального снимка для публикации. Удаление статьи сделает текущий моментальный снимок недействительным; поэтому должен быть создан новый моментальный снимок.

    Удаление статьи из публикации

  2. После удаления статьи из публикации необходимо создать новый моментальный снимок для публикации (и все секции, если это публикация слиянием с параметризованными фильтрами).

    Создание моментального снимка

    Создание моментального снимка для публикации слиянием с параметризованными фильтрами

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