Как управлять секциями для публикации слиянием с параметризованными фильтрами (программирование объектов RMO)
Программное формирование новых, перебор существующих и удаление секций подписчика с помощью объектов RMO обеспечивает большую управляемость публикации с параметризованными фильтрами. Сведения о создании секций подписчика см. в разделе Как создать моментальный снимок для публикации слиянием с параметризованными фильтрами (программирование объектов RMO). Для существующей секции доступны следующие сведения:
Значение и функция фильтрации, на которых базируется секция.
Имя задания, формирующего параметризованный снимок для подписчика.
Время последнего выполнения задания параметризованного моментального снимка.
Примечание |
---|
Если публикация имеет параметризованные фильтры, позволяющие получать подписки с неперекрывающимися секциями, то при необходимости повторного создания подписки в случае ее утраты необходимо: удалить секцию, которая была на нее подписана, создать заново подписку, а затем снова создать секцию. Дополнительные сведения см. в разделе Параметризованные фильтры строк. При формировании сценария публикации репликация формирует сценарии создания для существующих секций подписчика. Дополнительные сведения см. в разделе Создание сценариев репликации. |
Просмотр информации о существующих секциях
Создайте соединение с издателем с помощью класса ServerConnection.
Создайте экземпляр класса MergePublication. Задайте для публикации свойства Name и DatabaseName, а также установите созданное на шаге 1 соединение ServerConnection в качестве значения для свойства ConnectionContext.
Чтобы получить свойства объекта, вызовите метод LoadProperties. Если этот метод возвращает false, то либо на шаге 2 были неверно определены свойства публикации, либо публикация не существует.
Вызовите метод EnumMergePartitions и передайте его результат в массив объектов MergePartition.
Для каждого объекта MergePartition в массиве доступны любые интересующие свойства.
Удаление существующих секций
Создайте соединение с издателем с помощью класса ServerConnection.
Создайте экземпляр класса MergePublication. Задайте для публикации свойства Name и DatabaseName, а также установите созданное на шаге 1 соединение ServerConnection в качестве значения для свойства ConnectionContext.
Чтобы получить свойства объекта, вызовите метод LoadProperties. Если этот метод возвращает false, то либо на шаге 2 были неверно определены свойства публикации, либо публикация не существует.
Вызовите метод EnumMergePartitions и передайте его результат в массив объектов MergePartition.
Определите для каждого объекта MergePartition в массиве, необходимо ли удаление соответствующей секции. Решение обычно принимается исходя из значения свойств DynamicFilterLogin и DynamicFilterHostName.
Вызовите метод RemoveMergePartition объекта MergePublication, полученного на шаге 2. Передайте объект MergePartition, полученный на шаге 5.
Повторите шаг 6 для каждой удаляемой секции.
См. также