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


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

Для репликации транзакций важна возможность проверки подключения серверов и измерения задержки. Задержка измеряется с помощью трассировочных маркеров. Задержка — это время, которое проходит с момента внесения изменений на издателе до момента их распространения на подписчики. Дополнительные сведения см. в разделе Проверка соединений и измерение задержки для репликации транзакций. Эти сведения могут быть получены программно с помощью объектов RMO.

Отправка трассировочного маркера в публикацию транзакций

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

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

  3. Задайте для публикации свойства Name и DatabaseName, а также установите созданное на шаге 1 соединение ServerConnection в качестве значения для свойства.

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

  5. Вызовите метод PostTracerToken. Этот метод обеспечивает вставку трассировочного маркера в журнал транзакций публикации.

Измерение задержки и проверка соединений для публикации транзакций

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

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

  3. Установите свойства Name, DistributionDBName, PublisherName и PublicationDBName, а в качестве значения свойства ConnectionContext установите созданное на шаге 1 соединение.

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

  5. Вызовите метод EnumTracerTokens. Приведите возвращенный объект ArrayList к типу массива объектов TracerToken.

  6. Вызовите метод EnumTracerTokenHistory. Передайте значение TracerTokenID()()()() для трассировочного маркера, полученного на шаге 5. В результате будут возвращены сведения о задержке для выделенного трассировочного маркера в виде объекта DataSet. Если возвращены все сведения о трассировочном маркере, то существует соединение между издателем и распространителем, а также соединение между распространителем и подписчиком, и топология репликации работоспособна.

Удаление трассировочных маркеров

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

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

  3. Установите свойства Name, DistributionDBName, PublisherName и PublicationDBName, а в качестве значения свойства ConnectionContext установите созданное на шаге 1 соединение.

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

  5. Вызовите метод EnumTracerTokens. Приведите возвращенный объект ArrayList к типу массива объектов TracerToken.

  6. Вызовите метод CleanUpTracerTokenHistory. Передайте одно из следующих значений.

    • Значение TracerTokenID()()()() для трассировочного маркера, полученного на шаге 5. В результате этого сведения для выделенного маркера будут удалены.

    • Объект DateTime. В результате этого будут удалены сведения обо всех маркерах, созданных до наступления указанного момента времени.