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


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

Монитор репликации – это графическое средство, позволяющее осуществлять мониторинг топологии репликации. К данным наблюдения можно обращаться программным путем с помощью объектов RMO. Классы RMO позволяют программировать следующие задачи:

Мониторинг подписки на публикацию слиянием на подписчике

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

  2. Создайте экземпляр класса MergeSubscriberMonitor и задайте свойства Publisher, Publication, PublisherDB, SubscriberDB для подписки, а затем задайте свойства ConnectionContext для ServerConnection, созданного в шаге 1.

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

    • GetSessionsSummary()()()() — возвращает массив объектов MergeSessionSummary со сведениями о последних пяти сеансах агента слияния. Запомните значения SessionID()()()() для всех необходимых сеансов.

    • GetSessionsSummary(Int32) — возвращает массив объектов MergeSessionSummary со сведениями о сеансах агента слияния за количество часов, указанное в параметре hours (до пяти последних сеансов). Запомните значения SessionID()()()() для всех необходимых сеансов.

    • GetLastSessionSummary — возвращает объект MergeSessionSummary с информацией о последнем сеансе агента слияния. Запомните значение SessionID()()()() для этого сеанса.

    • GetSessionsSummaryDataSet — возвращает объект DataSet со сведениями о последних сеансах агента слияния (до пяти сеансов по одному в каждой строке). Запишите значение столбца Session_id для каждого сеанса, представляющего интерес.

    • GetLastSessionSummaryDataRow — возвращает объект DataRow с информацией о последнем сеансе агента слияния. Запишите значение столбца Session_id для каждого сеанса, представляющего интерес.

  4. Вызовите RefreshSessionSummary(MergeSessionSummary%), чтобы обновить данные для объекта MergeSessionSummary, передаваемого в качестве параметра mss, или вызовите RefreshSessionSummary(DataRow%), чтобы обновить данные для объекта DataRow, передаваемого в качестве параметра drRefresh (необязательно).

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

Мониторинг свойств репликации для всех публикаций на распространителе

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

  2. Создайте экземпляр класса ReplicationMonitor.

  3. Укажите для свойства ConnectionContext в качестве значения соединение ServerConnection, созданное в шаге 1.

  4. Чтобы получить свойства объекта, вызовите метод LoadProperties.

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

    • EnumDistributionAgents — возвращает объект DataSet со сведениями обо всех агентах распространителя на данном распространителе.

    • EnumErrorRecords — возвращает объект DataSet со сведениями об ошибках, которые хранятся на данном распространителе.

    • EnumLogReaderAgents — возвращает объект DataSet со сведениями обо всех агентах чтения журнала на данном распространителе.

    • EnumMergeAgents — возвращает объект DataSet со сведениями обо всех агентах слияния на данном распространителе.

    • EnumMiscellaneousAgents — возвращает объект DataSet со сведениями обо всех остальных агентах репликации на данном распространителе.

    • EnumPublishers — возвращает объект DataSet со сведениями обо всех издателях на данном распространителе.

    • EnumPublishers2 — возвращает объект DataSet со списком издателей, использующих данный распространитель.

    • EnumQueueReaderAgents — возвращает объект DataSet со сведениями обо всех агентах чтения очереди на данном распространителе.

    • EnumQueueReaderAgentSessionDetails — возвращает объект DataSet со сведениями об указанном агенте чтения очереди и сеансе.

    • EnumQueueReaderAgentSessions — возвращает объект DataSet со сведениями сеанса об указанном агенте чтения очереди.

    • EnumSnapshotAgents — возвращает объект DataSet со сведениями обо всех агентах моментальных снимков на данном распространителе.

Мониторинг свойств публикации для указанного издателя на распространителе

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

  2. Получите объект PublisherMonitor одним из следующих способов:

    • Создайте экземпляр класса PublisherMonitor. Задайте свойство Name для издателя и задайте свойство ConnectionContext для ServerConnection, созданного на шаге 1. Вызовите метод LoadProperties для получения свойств объекта. Если этот метод возвращает значение false, это означает, что было неправильно задано имя издателя или такой публикации не существует.

    • Из коллекции PublisherMonitorCollection, доступ к которой был получен с помощью свойства PublisherMonitors существующего объекта ReplicationMonitor.

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

    • EnumDistributionAgentSessionDetails — возвращает объект DataSet со сведениями об указанном агенте распространителя и сеансе.

    • EnumDistributionAgentSessions — возвращает объект DataSet со сведениями об указанном агенте распространителя.

    • EnumErrorRecords — возвращает объект DataSet с информацией журнала ошибок об указанной ошибке.

    • EnumLogReaderAgentSessionDetails — возвращает объект DataSet со сведениями об указанном агенте чтения журнала и сеансе.

    • EnumLogReaderAgentSessions — возвращает объект DataSet со сведениями сеанса по указанному агенту чтения журнала.

    • EnumMergeAgentSessionDetails — возвращает объект DataSet со сведениями об указанном агенте слияния и сеансе.

    • EnumMergeAgentSessionDetails2 — возвращает объект DataSet со сведениями об указанном агенте слияния и сеансе.

    • EnumMergeAgentSessions — возвращает объект DataSet со сведениями сеанса об указанном агенте слияния.

    • EnumMergeAgentSessions2 — возвращает объект DataSet с дополнительными сведениями сеанса об указанном агенте слияния.

    • EnumPublications — возвращает объект DataSet со сведениями обо всех публикациях на данном распространителе.

    • EnumPublications2 — возвращает объект DataSet с дополнительными сведениями обо всех публикациях на данном распространителе.

    • EnumSnapshotAgentSessionDetails — возвращает объект DataSet со сведениями об указанном агенте моментальных снимков и сеансе.

    • EnumSnapshotAgentSessions — возвращает объект DataSet со сведениями сеанса об указанном агенте моментальных снимков.

    • EnumSubscriptions — возвращает объект DataSet со сведениями обо всех подписках на публикации на данном распространителе.

Мониторинг свойств указанной публикации на распространителе

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

  2. Получите объект PublicationMonitor одним из следующих способов:

    • Создайте экземпляр класса PublicationMonitor. Установите для публикации свойства DistributionDBName, PublisherName, PublicationDBName и Name, а также установите в качестве значения для свойства ConnectionContext созданный на шаге 1 экземпляр ServerConnection. Чтобы получить свойства объекта, используйте метод LoadProperties. Если этот метод возвращает false, то либо свойства публикации были определены неверно, либо публикация не существует.

    • Из коллекции PublicationMonitorCollection, доступ к которой был получен с помощью свойства PublicationMonitors существующего объекта PublisherMonitor.

  3. Выполните один или несколько следующих методов для получения сведений о данной публикации.

    • EnumErrorRecords — возвращает объект DataSet с информацией журнала ошибок об указанной ошибке.

    • EnumLogReaderAgent — возвращает объект DataSet со сведениями об агенте чтения журнала для данной публикации.

    • EnumMonitorThresholds — возвращает объект DataSet с информацией по мониторингу пороговых значений предупреждений, заданных для этой публикации.

    • EnumQueueReaderAgent — возвращает объект DataSet со сведениями об агенте чтения очереди, используемом данной публикацией.

    • EnumSnapshotAgent — возвращает объект DataSet со сведениями об агенте моментальных снимков для данной публикации.

    • EnumSubscriptions — возвращает объект DataSet со сведениями обо всех подписках на эту публикацию.

    • EnumSubscriptions2 — возвращает объект DataSet с дополнительными сведениями обо всех подписках на данную публикацию в зависимости от параметра SubscriptionResultOption.

    • EnumTracerTokenHistory — возвращает объект DataSet с данными задержки для указанного трассировочного маркера.

    • EnumTracerTokens — возвращает объект DataSet со сведениями обо всех трассировочных маркерах, вставленных в данную публикацию.

Мониторинг команд транзакций, ожидающих выполнения на подписчике

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

  2. Получите объект PublicationMonitor одним из следующих способов.

  3. Выполните метод TransPendingCommandInfo, который возвращает объект PendingCommandInfo.

  4. Используйте свойства этого объекта PendingCommandInfo для определения примерного количества команд, ожидающих выполнения, и необходимого времени для завершения их доставки.

Мониторинг пороговых значений предупреждений для публикации

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

  2. Получите объект PublicationMonitor одним из следующих способов:

    • Создайте экземпляр класса PublicationMonitor. Установите для публикации свойства DistributionDBName, PublisherName, PublicationDBName и Name, а также установите для свойства ConnectionContext значение для созданного на шаге 1ServerConnection значение. Чтобы получить свойства объекта, используйте метод LoadProperties. Если этот метод возвращает false, то либо свойства публикации были определены неверно, либо публикация не существует.

    • Из коллекции PublicationMonitorCollection, доступ к которой был получен с помощью свойства PublicationMonitors существующего объекта PublisherMonitor.

  3. Вызовите метод EnumMonitorThresholds. Запомните текущие пороговые значения в возвращаемом списке ArrayList объектов MonitorThreshold.

  4. Вызовите метод ChangeMonitorThreshold. Передайте следующие параметры:

    • metricID — это значение Int32, представляющее пороговый показатель из следующей таблицы.

      Значение

      Описание

      1

      expiration — следит за приближающимся истечением сроков подписок на публикации транзакций.

      2

      latency — следит за производительностью подписок на публикации транзакций.

      4

      mergeexpiration — следит за приближающимся истечением срока подписок на публикации слиянием.

      5

      mergeslowrunduration — следит за продолжительностью синхронизаций слиянием через соединения с низкой пропускной способностью (коммутируемые).

      6

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

      7

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

      8

      mergeslowrunspeed — следит за частотой синхронизаций слиянием через соединения с низкой пропускной способностью (коммутируемые).

    • enable — значение типа Boolean, которое указывает, включен ли этот показатель для данной публикации.

    • thresholdValue — целое значение, определяющее порог.

    • shouldAlert — целое значение, которое указывает, должен ли порог вызывать системное предупреждение.