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


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

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

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

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

Замечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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