Наблюдение за репликацией программным образомProgrammatically Monitor Replication

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed InstanceПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance

Монитор репликации — это графическое средство, позволяющее осуществлять мониторинг топологии репликации.Replication Monitor is a graphical tool that allows you to monitor a replication topology. К данным мониторинга можно обращаться программным путем с помощью хранимых процедур репликации Transact-SQLTransact-SQL или объектов RMO.You can access the same monitoring data programmatically by using Transact-SQLTransact-SQL replication stored procedures or replication management objects (RMO). Эти объекты позволяют программировать следующие задачи:These objects enable you to program the following tasks:

  • Наблюдение за состоянием издателей, публикаций и подписок.Monitor the state of Publishers, publications, and subscriptions.

  • Мониторинг сеансов агентов слияния на одном или нескольких подписчиках.Monitor Merge Agent sessions at one or more Subscribers.

  • Мониторинг команд транзакций, ожидающих выполнения на одном или нескольких подписчиках.Monitor transactional commands waiting to be applied at one or more Subscribers.

  • Установка пороговых показателей, определяющих, когда необходимо вмешательство в публикацию.Define the threshold metrics that determine when a publication requires intervention.

  • Мониторинг состояния трассировочных токенов.Monitor the status of tracer tokens.

В этом разделе:In this topic:

Transact-SQLTransact-SQL

объекты RMO;Replication Management Objects (RMO)

Transact-SQLTransact-SQL

Мониторинг издателей, публикаций и подписок с распространителяTo monitor Publishers, publications, and subscriptions from the Distributor

  1. В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelppublisher.At the Distributor on the distribution database, execute sp_replmonitorhelppublisher. Будут возвращены данные мониторинга всех издателей, использующих этот распространитель.This returns monitoring information for all Publishers using this Distributor. Чтобы ограничить результирующий набор одним издателем, задайте параметр @publisher.To limit the result set to a single Publisher, specify @publisher.

  2. В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelppublication.At the Distributor on the distribution database, execute sp_replmonitorhelppublication. Будут возвращены данные мониторинга для всех публикаций, использующих этот распространитель.This returns monitoring information for all publications using this Distributor. Чтобы ограничить результирующий набор одним издателем, одной публикацией или одной опубликованной базой данных, задайте параметр @publisher, @publication или @publisher_db соответственно.To limit the result set to a single Publisher, publication, or published database, specify @publisher, @publication, or @publisher_db, respectively.

  3. В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelpsubscription.At the Distributor on the distribution database, execute sp_replmonitorhelpsubscription. Будут возвращены данные мониторинга для всех подписок, использующих этот распространитель.This returns monitoring information for all subscriptions using this Distributor. Чтобы ограничить результирующий набор подписками, принадлежащими одному издателю, публикации или опубликованной базе данных, задайте параметр @publisher, @publication или @publisher_db соответственно.To limit the result set to subscriptions belonging to a single Publisher, publication, or published database, specify @publisher, @publication, or @publisher_db, respectively.

Мониторинг команд транзакций, ожидающих выполнения на подписчикеTo monitor transactional commands waiting to be applied at the Subscriber

  1. В базе данных распространителя на распространителе выполните процедуру sp_replmonitorsubscriptionpendingcmds.At the Distributor on the distribution database, execute sp_replmonitorsubscriptionpendingcmds. Будут возвращены данные мониторинга по всем ждущим командам для всех подписок, использующих этот распространитель.This returns monitoring information for all commands pending for all subscriptions using this Distributor. Чтобы ограничить результирующий набор ждущими командами для подписок, принадлежащих одному издателю, подписчику, публикации или опубликованной базе данных, укажите параметр @publisher, @subscriber, @publication или @publisher_db соответственно.To limit the result set to commands pending for subscriptions belonging to a single Publisher, Subscriber, publication, or published database, specify @publisher, @subscriber, @publication, or @publisher_db, respectively.

Мониторинг изменений слияния, ожидающих загрузки или выгрузкиTo monitor merge changes waiting to be uploaded or downloaded

  1. В базе данных публикации на издателе выполните процедуру sp_showpendingchanges.At the Publisher on the publication database, execute sp_showpendingchanges. Это возвращает результирующий набор с информацией об изменениях, ожидающих репликации на серверы-подписчики.This returns a result set showing information on changes that are waiting to be replicated to Subscribers. Чтобы ограничить результирующий набор изменениями, которые принадлежат одной публикации или статье, укажите параметр @publication или @article соответственно.To limit the result set to changes that belong to a single publication or article, specify @publication or @article, respectively.

  2. В базе данных подписки на подписчике выполните процедуру sp_showpendingchanges.At a Subscriber on the subscription database, execute sp_showpendingchanges. Это возвращает результирующий набор с информацией об изменениях, ожидающих репликации на сервер-издатель.This returns a result set showing information on changes that are waiting to be replicated to the Publisher. Чтобы ограничить результирующий набор изменениями, которые принадлежат одной публикации или статье, укажите параметр @publication или @article соответственно.To limit the result set to changes that belong to a single publication or article, specify @publication or @article, respectively.

Мониторинг сеансов агента слиянияTo monitor Merge Agent sessions

  1. В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelpmergesession.At the Distributor on the distribution database, execute sp_replmonitorhelpmergesession. Это возвращает данные мониторинга, включая Session_id, по всем сеансам агента слияния для всех подписок, использующих этот распространитель.This returns monitoring information, including Session_id, on all Merge Agent sessions for all subscriptions using this Distributor. Еще один способ получить Session_id — это запросить системную таблицу MSmerge_sessions .You can also obtain Session_id by querying the MSmerge_sessions system table.

  2. В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelpmergesessiondetail.At the Distributor on the distribution database, execute sp_replmonitorhelpmergesessiondetail. В параметре @session_id укажите значение Session_id, полученное на шаге 1.Specify a Session_id value from step 1 for @session_id. Будут выданы подробные сведения о сеансе.This displays detailed monitor information about the session.

  3. Повторите шаг 2 для всех интересующих сеансов.Repeat step 2 for each session of interest.

Мониторинг сеансов агента слияния для подписок по запросу с подписчикаTo monitor Merge Agent sessions for pull subscriptions from the Subscriber

  1. В базе данных подписки на подписчике выполните процедуру sp_replmonitorhelpmergesession.At the Subscriber on the subscription database, execute sp_replmonitorhelpmergesession. Для этой подписки укажите @publisher, @publication и имя базы данных публикации для @publisher_db.For a given subscription, specify @publisher, @publication, and the name of the publication database for @publisher_db. Будут возвращены сведения о последних пяти сеансах агента слияния для этой подписки.This returns monitoring information for the last five Merge Agent sessions for this subscription. Запомните значение Session_id для сеансов, представляющих интерес в результирующем наборе.Note the value of Session_id for sessions of interest in the result set.

  2. В базе данных подписки на подписчике выполните процедуру sp_replmonitorhelpmergesessiondetail.At the Subscriber on the subscription database, execute sp_replmonitorhelpmergesessiondetail. В параметре @session_id укажите значение Session_id, полученное на шаге 1.Specify a Session_id value from step 1 for @session_id. Будут возвращены подробные данные мониторинга сеанса.This displays detailed monitoring information about the session.

  3. Повторите шаг 2 для всех интересующих сеансов.Repeat step 2 for each session of interest.

Получение и изменение пороговых метрик мониторинга для публикацииTo view and modify the monitor threshold metrics for a publication

  1. В базе данных распространителя на распространителе выполните процедуру sp_replmonitorhelppublicationthresholds.At the Distributor on the distribution database, execute sp_replmonitorhelppublicationthresholds. Будут возвращены пороговые значения мониторинга для всех публикаций, использующих этот распространитель.This returns the monitoring thresholds set for all publications using this Distributor. Чтобы ограничить результирующий набор пороговыми значениями для публикаций, принадлежащих одному издателю, одной опубликованной базе данных или одной публикации, задайте параметр @publisher, @publisher_db или @publication соответственно.To limit the result set to monitor thresholds to publications belonging to a single Publisher or published database or to a single publication, specify @publisher, @publisher_db, or @publication, respectively. Запомните значение Metric_id для всех порогов, которые требуется изменить.Note the value of Metric_id for any thresholds that must be changed. Дополнительные сведения см. в статье Set Thresholds and Warnings in Replication Monitor.For more information, see Set Thresholds and Warnings in Replication Monitor.

  2. В базе данных распространителя на распространителе выполните процедуру sp_replmonitorchangepublicationthreshold.At the Distributor on the distribution database, execute sp_replmonitorchangepublicationthreshold. Если требуется, укажите следующие значения.Specify the following as needed:

    • Значение Metric_id, полученное на шаге 1, в параметре @metric_id.The Metric_id value obtained in step 1 for @metric_id.

    • Новое отслеживаемое значение пороговой метрики в параметре @value.A new value for the monitor threshold metric for @value.

    • Значение 1 в параметре @shouldalert, чтобы при достижении порога записывалось в журнал предупреждение, или 0, если предупреждение не требуется.A value of 1 for @shouldalert for an alert to be logged when this threshold is reached, or a value of 0 if an alert is not needed.

    • Значение 1 в параметре @mode, чтобы включить мониторинг пороговой метрики, или 2, чтобы выключить его.A value of 1 for @mode to enable the monitor threshold metric or a value of 2 to disable it.

объекты RMO;Replication Management Objects (RMO)

Мониторинг подписки на публикацию слиянием на подписчикеTo monitor a subscription to a merge publication at the Subscriber

  1. Создайте соединение с подписчиком с помощью класса ServerConnection .Create a connection to the Subscriber by using the ServerConnection class.

  2. Создайте экземпляр класса MergeSubscriberMonitor и задайте свойства Publisher, Publication, PublisherDB, SubscriberDB для подписки, а затем задайте свойства ConnectionContext для ServerConnection , созданного в шаге 1.Create an instance of the MergeSubscriberMonitor class, and set the Publisher, Publication, PublisherDB, SubscriberDB properties for the subscription, and set the ConnectionContext property to the ServerConnection created in step 1.

  3. Чтобы получить сведения о сеансах агента слияния для данной подписки, вызовите один из следующих методов.Call one of the following methods to return information on Merge Agent sessions for this subscription:

    • GetSessionsSummary — возвращает массив объектов MergeSessionSummary со сведениями о последних пяти сеансах агента слияния.GetSessionsSummary - returns an array of MergeSessionSummary objects with information on up to the last five Merge Agent sessions. Запомните значения SessionId для всех необходимых сеансов.Note the SessionId value for any sessions of interest.

    • GetSessionsSummary — возвращает массив объектов MergeSessionSummary со сведениями о сеансах агента слияния за количество часов, указанное в параметре hours (до пяти последних сеансов).GetSessionsSummary - returns an array of MergeSessionSummary objects with information on Merge Agent sessions that have occurred during the past number of hours passed in as the hours parameter (up to the last five sessions). Запомните значения SessionId для всех необходимых сеансов.Note the SessionId value for any sessions of interest.

    • GetLastSessionSummary — возвращает объект MergeSessionSummary с информацией о последнем сеансе агента слияния.GetLastSessionSummary - returns a MergeSessionSummary object with information on the last Merge Agent session. Запомните значение SessionId для этого сеанса.Note the SessionId value for this session.

    • GetSessionsSummaryDataSet — возвращает объект DataSet со сведениями о последних сеансах агента слияния (до пяти сеансов по одному в каждой строке).GetSessionsSummaryDataSet - returns a DataSet object with information on up to the last five Merge Agent sessions, one in each row. Запишите значение столбца Session_id для каждого сеанса, представляющего интерес.Note the value of the Session_id column for any sessions of interest.

    • GetLastSessionSummaryDataRow — возвращает объект DataRow с информацией о последнем сеансе агента слияния.GetLastSessionSummaryDataRow - returns a DataRow object with information on the last Merge Agent session. Запишите значение столбца Session_id для каждого сеанса, представляющего интерес.Note the value of the Session_id column for this session.

  4. Вызовите RefreshSessionSummary , чтобы обновить данные для объекта MergeSessionSummary , передаваемого в качестве параметра mss, или вызовите RefreshSessionSummary , чтобы обновить данные для объекта DataRow , передаваемого в качестве параметра drRefresh.(Optional) Call RefreshSessionSummary to refresh the data for the MergeSessionSummary object passed as mss, or call RefreshSessionSummary to refresh the data in the DataRow object passed as drRefresh.

  5. С помощью идентификатора сеанса, полученного в шаге 3, вызовите один из следующих методов для получения сведений об отдельном сеансе.Using the session ID obtained in step 3, call one of the following methods to return information on the details of a particular session:

Мониторинг свойств репликации для всех публикаций на распространителеTo monitor replication properties for all publications at a Distributor

  1. Создайте соединение с распространителем с помощью класса ServerConnection .Create a connection to the Distributor by using the ServerConnection class.

  2. Создайте экземпляр класса ReplicationMonitor.Create an instance of the ReplicationMonitor class.

  3. Укажите для свойства ConnectionContext в качестве значения соединение ServerConnection , созданное в шаге 1.Set the ConnectionContext property to the ServerConnection created in step 1.

  4. Чтобы получить свойства объекта, вызовите метод LoadProperties .Call the LoadProperties method to get the properties of the object.

  5. Выполните один или несколько следующих методов для получения сведений о репликации по всем издателям, использующим данный распространитель.Execute one or more of the following methods to return replication information for all Publishers that use this Distributor.

    • EnumDistributionAgents — возвращает объект DataSet со сведениями обо всех агентах распространителя на данном распространителе.EnumDistributionAgents - returns a DataSet object that contains information about all Distribution Agents at this Distributor.

    • EnumErrorRecords — возвращает объект DataSet со сведениями об ошибках, которые хранятся на данном распространителе.EnumErrorRecords - returns a DataSet object that contains information about errors stored at the Distributor.

    • EnumLogReaderAgents — возвращает объект DataSet со сведениями обо всех агентах чтения журнала на данном распространителе.EnumLogReaderAgents - returns a DataSet object that contains information about all Log Reader Agents at the Distributor.

    • EnumMergeAgents — возвращает объект DataSet со сведениями обо всех агентах слияния на данном распространителе.EnumMergeAgents - returns a DataSet object that contains information about all Merge Agents at the Distributor.

    • EnumMiscellaneousAgents — возвращает объект DataSet со сведениями обо всех остальных агентах репликации на данном распространителе.EnumMiscellaneousAgents - returns a DataSet object that contains information about all other replication agents at the Distributor.

    • EnumPublishers — возвращает объект DataSet со сведениями обо всех издателях на данном распространителе.EnumPublishers - returns a DataSet object that contains information about all Publishers at this Distributor.

    • EnumPublishers2 — возвращает объект DataSet со списком издателей, использующих данный распространитель.EnumPublishers2 - returns a DataSet object that returns the Publishers that use this Distributor.

    • EnumQueueReaderAgents — возвращает объект DataSet со сведениями обо всех агентах чтения очереди на данном распространителе.EnumQueueReaderAgents - returns a DataSet object that contains information about all Queue Reader Agents at the Distributor.

    • EnumQueueReaderAgentSessionDetails — возвращает объект DataSet со сведениями об указанном агенте чтения очереди и сеансе.EnumQueueReaderAgentSessionDetails - returns a DataSet object that contains details about the specified Queue Reader Agent and session.

    • EnumQueueReaderAgentSessions — возвращает объект DataSet со сведениями сеанса об указанном агенте чтения очереди.EnumQueueReaderAgentSessions - returns a DataSet object that contains session information about the specified Queue Reader Agent.

    • EnumSnapshotAgents — возвращает объект DataSet со сведениями обо всех агентах моментальных снимков на данном распространителе.EnumSnapshotAgents - returns a DataSet object that contains information about all Snapshot Agents at the Distributor.

Мониторинг свойств публикации для указанного издателя на распространителеTo monitor publication properties for a specific Publisher at the Distributor

  1. Создайте соединение с распространителем с помощью класса ServerConnection .Create a connection to the Distributor by using the ServerConnection class.

  2. Получите объект PublisherMonitor одним из следующих способов.Get a PublisherMonitor object in one of these ways.

    • Создайте экземпляр класса PublisherMonitor.Create an instance of the PublisherMonitor class. Задайте для издателя свойство Name , а также установите созданное на шаге 1 соединение ConnectionContext в качестве значения для свойства ServerConnection .Set the Name property for the Publisher, and set the ConnectionContext property to the ServerConnection created in step 1. Чтобы получить свойства объекта, вызовите метод LoadProperties .Call the LoadProperties method to get the properties of the object. Если этот метод возвращает значение false, это означает, что было неправильно задано имя издателя или такой публикации не существует.If this method returns false, either the Publisher name was defined incorrectly or the publication does not exist.

    • Из коллекции PublisherMonitorCollection , доступ к которой был получен с помощью свойства PublisherMonitors существующего объекта ReplicationMonitor .From the PublisherMonitorCollection accessed by means of the PublisherMonitors property of an existing ReplicationMonitor object.

  3. Выполните один или несколько следующих методов, чтобы получить сведения о репликации по всем публикациям, принадлежащим данному издателю.Execute one or more of the following methods to return replication information for all publications that belong to this Publisher.

Мониторинг свойств указанной публикации на распространителеTo monitor properties for a specific publication at the Distributor

  1. Создайте соединение с распространителем с помощью класса ServerConnection .Create a connection to the Distributor by using the ServerConnection class.

  2. Получите объект PublicationMonitor одним из следующих способов.Get a PublicationMonitor object in one of these ways.

  3. Выполните один или несколько следующих методов для получения сведений о данной публикации.Execute one or more of the following methods to return information about this publication.

    • EnumErrorRecords — возвращает объект DataSet с информацией журнала ошибок об указанной ошибке.EnumErrorRecords - returns a DataSet object that contains error records about the specified error.

    • EnumLogReaderAgent — возвращает объект DataSet со сведениями об агенте чтения журнала для данной публикации.EnumLogReaderAgent - returns a DataSet object that contains information about the Log Reader Agent for this publication.

    • EnumMonitorThresholds — возвращает объект DataSet с информацией по мониторингу пороговых значений, заданных для этой публикации.EnumMonitorThresholds - returns a DataSet object that contains information about the monitor warning thresholds set for this publication.

    • EnumQueueReaderAgent — возвращает объект DataSet со сведениями об агенте чтения очереди, используемом данной публикацией.EnumQueueReaderAgent - returns a DataSet object that contains information about the Queue Reader Agent used by this publication.

    • EnumSnapshotAgent — возвращает объект DataSet со сведениями об агенте моментальных снимков для данной публикации.EnumSnapshotAgent - returns a DataSet object that contains information about the Snapshot Agent for this publication.

    • EnumSubscriptions — возвращает объект DataSet со сведениями обо всех подписках на эту публикацию.EnumSubscriptions - returns a DataSet object that contains information about subscriptions to this publication.

    • EnumSubscriptions2 — возвращает объект DataSet с дополнительными сведениями обо всех подписках на данную публикацию в зависимости от параметра SubscriptionResultOption.EnumSubscriptions2 - returns a DataSet object that contains additional information about subscriptions to this publication based on the supplied SubscriptionResultOption.

    • EnumTracerTokenHistory — возвращает объект DataSet с данными задержки для указанного трассировочного токена.EnumTracerTokenHistory - returns a DataSet object that contains latency information for the specified tracer token.

    • EnumTracerTokens — возвращает объект DataSet со сведениями обо всех трассировочных токенах, вставленных в данную публикацию.EnumTracerTokens - returns a DataSet object that contains information about all tracer tokens inserted into this publication.

Мониторинг команд транзакций, ожидающих выполнения на подписчикеTo monitor transactional commands that are waiting to be applied at the Subscriber

  1. Создайте соединение с распространителем с помощью класса ServerConnection .Create a connection to the Distributor by using the ServerConnection class.

  2. Получите объект PublicationMonitor одним из следующих способов.Get a PublicationMonitor object in one of these ways.

  3. Выполните метод TransPendingCommandInfo , который возвращает объект PendingCommandInfo .Execute the TransPendingCommandInfo method, which returns a PendingCommandInfo object.

  4. Используйте свойства этого объекта PendingCommandInfo для определения примерного количества команд, ожидающих выполнения, и необходимого времени для завершения их доставки.Use the properties of this PendingCommandInfo object to determine the estimated number of pending commands and the length of time it will take to complete the delivery of these commands.

Мониторинг пороговых значений предупреждений для публикацииTo set the monitor warning thresholds for a publication

  1. Создайте соединение с распространителем с помощью класса ServerConnection .Create a connection to the Distributor by using the ServerConnection class.

  2. Получите объект PublicationMonitor одним из следующих способов.Get a PublicationMonitor object in one of these ways.

  3. Вызовите метод EnumMonitorThresholds .Execute the EnumMonitorThresholds method. Запомните текущие пороговые значения в возвращаемом списке ArrayList объектов MonitorThreshold .Note the current threshold settings in the returned ArrayList of MonitorThreshold objects.

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

    • metricID — это значение Int32 , представляющее пороговую метрику из следующей таблицы.metricID - an Int32 value that represents the monitoring threshold metric from the following table:

      ЗначениеValue ОписаниеDescription
      11 expiration следит за приближающимся истечением срока подписки на публикации транзакций.expiration - monitors for imminent expiration of subscriptions to transactional publications.
      22 latency следит за производительностью подписки на публикации транзакций.latency - monitors for the performance of subscriptions to transactional publications.
      44 mergeexpiration следит за приближающимся истечением срока подписки на публикации слиянием.mergeexpiration - monitors for imminent expiration of subscriptions to merge publications.
      55 mergeslowrunduration — следит за продолжительностью синхронизаций слиянием через соединения с низкой пропускной способностью (коммутируемые).mergeslowrunduration - monitors the duration of merge synchronizations over low-bandwidth (dialup) connections.
      66 mergefastrunduration следит за длительностью синхронизации слиянием через соединения с высокой пропускной способностью (локальная сеть).mergefastrunduration - monitors the duration of merge synchronizations over high-bandwidth (LAN) connections.
      77 mergefastrunspeed — следит за частотой синхронизаций слиянием через соединения с высокой пропускной способностью (локальная сеть).mergefastrunspeed - monitors the synchronization rate of merge synchronizations over high-bandwidth (LAN) connections.
      88 mergeslowrunspeed — следит за частотой синхронизаций слиянием через соединения с низкой пропускной способностью (коммутируемые).mergeslowrunspeed - monitors the synchronization rate of merge synchronizations over low-bandwidth (dialup) connections.
    • enable - Boolean , которое указывает, включен ли этот показатель для данной публикации.enable - Boolean value that indicates whether the metric is enabled for the publication.

    • thresholdValue — целое значение, определяющее порог.thresholdValue - integer value that sets the threshold.

    • shouldAlert — целочисленное значение, которое указывает, должен ли порог вызывать предупреждение.shouldAlert - integer that indicates whether this threshold should generate an alert.