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


Как управлять секциями для публикации слиянием с параметризованными фильтрами (программирование объектов RMO)

Программное формирование новых, перебор существующих и удаление секций подписчика с помощью объектов RMO обеспечивает большую управляемость публикации с параметризованными фильтрами. Сведения о создании секций подписчика см. в разделе Как создать моментальный снимок для публикации слиянием с параметризованными фильтрами (программирование объектов RMO). Для существующей секции доступны следующие сведения:

  • Значение и функция фильтрации, на которых базируется секция.

  • Имя задания, формирующего параметризованный снимок для подписчика.

  • Время последнего выполнения задания параметризованного моментального снимка.

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

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

Просмотр информации о существующих секциях

  1. Создайте соединение с издателем с помощью класса ServerConnection.

  2. Создайте экземпляр класса MergePublication. Задайте для публикации свойства Name и DatabaseName, а также установите созданное на шаге 1 соединение ServerConnection в качестве значения для свойства ConnectionContext.

  3. Чтобы получить свойства объекта, вызовите метод LoadProperties. Если этот метод возвращает false, то либо на шаге 2 были неверно определены свойства публикации, либо публикация не существует.

  4. Вызовите метод EnumMergePartitions и передайте его результат в массив объектов MergePartition.

  5. Для каждого объекта MergePartition в массиве доступны любые интересующие свойства.

Удаление существующих секций

  1. Создайте соединение с издателем с помощью класса ServerConnection.

  2. Создайте экземпляр класса MergePublication. Задайте для публикации свойства Name и DatabaseName, а также установите созданное на шаге 1 соединение ServerConnection в качестве значения для свойства ConnectionContext.

  3. Чтобы получить свойства объекта, вызовите метод LoadProperties. Если этот метод возвращает false, то либо на шаге 2 были неверно определены свойства публикации, либо публикация не существует.

  4. Вызовите метод EnumMergePartitions и передайте его результат в массив объектов MergePartition.

  5. Определите для каждого объекта MergePartition в массиве, необходимо ли удаление соответствующей секции. Решение обычно принимается исходя из значения свойств DynamicFilterLogin и DynamicFilterHostName.

  6. Вызовите метод RemoveMergePartition объекта MergePublication, полученного на шаге 2. Передайте объект MergePartition, полученный на шаге 5.

  7. Повторите шаг 6 для каждой удаляемой секции.