Monitore programaticamente a replicaçãoProgrammatically Monitor Replication

O Replication Monitor é uma ferramenta gráfica que permite monitorar uma topologia de replicação.Replication Monitor is a graphical tool that allows you to monitor a replication topology. É possível acessar os mesmos dados de monitoração programaticamente usando o RMO (Replication Management Objects) ou procedimentos armazenados de replicação do Transact-SQLTransact-SQL .You can access the same monitoring data programmatically by using Transact-SQLTransact-SQL replication stored procedures or replication management objects (RMO). Esses objetos permitem programar as seguintes tarefas:These objects enable you to program the following tasks:

  • Monitorar o estado de Publicadores, publicações e assinaturas.Monitor the state of Publishers, publications, and subscriptions.

  • Monitorar as sessões do Merge Agent em um ou mais Assinantes.Monitor Merge Agent sessions at one or more Subscribers.

  • Monitorar os comandos transacionais que estão esperando para serem aplicados em um ou mais Assinantes.Monitor transactional commands waiting to be applied at one or more Subscribers.

  • Definir os limites métricos que determinam quando uma publicação requer intervenção.Define the threshold metrics that determine when a publication requires intervention.

  • Monitorar o estado de tokens de rastreamento.Monitor the status of tracer tokens.

    Neste tópico:In this topic:

    Transact-SQLTransact-SQL

    RMO (Replication Management Objects)Replication Management Objects (RMO)

Transact-SQL Transact-SQL

Para monitorar Publicador, publicações e assinatura a partir do DistribuidorTo monitor Publishers, publications, and subscriptions from the Distributor

  1. No Distribuidor, no banco de dados de distribuição, execute sp_replmonitorhelppublisher.At the Distributor on the distribution database, execute sp_replmonitorhelppublisher. Isso retornará informações para todos os Publicadores que usarem esse Distribuidor.This returns monitoring information for all Publishers using this Distributor. Para limitar o conjunto de resultados a um único Publicador, especifique @publisher.To limit the result set to a single Publisher, specify @publisher.

  2. No Distribuidor do banco de dados de distribuição, execute sp_replmonitorhelppublication.At the Distributor on the distribution database, execute sp_replmonitorhelppublication. Isso retornará informações para todas as publicações que usarem esse Distribuidor.This returns monitoring information for all publications using this Distributor. Para limitar o conjunto de resultados a um único Publicador, publicação ou banco de dados publicado, especifique @publisher, @publicationou @publisher_db, respectivamente.To limit the result set to a single Publisher, publication, or published database, specify @publisher, @publication, or @publisher_db, respectively.

  3. No Distribuidor do banco de dados de distribuição, execute sp_replmonitorhelpsubscription.At the Distributor on the distribution database, execute sp_replmonitorhelpsubscription. Isso retornará informações para todas as assinaturas que usarem esse Distribuidor.This returns monitoring information for all subscriptions using this Distributor. Para limitar o conjunto de resultados às assinaturas pertencentes a um único Publicador, publicação ou banco de dados publicado, especifique @publisher, @publicationou @publisher_db, respectivamente.To limit the result set to subscriptions belonging to a single Publisher, publication, or published database, specify @publisher, @publication, or @publisher_db, respectively.

Para monitorar os comandos transacionais que estão esperando para serem aplicados no Assinante.To monitor transactional commands waiting to be applied at the Subscriber

  1. No Distribuidor do banco de dados de distribuição, execute sp_replmonitorsubscriptionpendingcmds.At the Distributor on the distribution database, execute sp_replmonitorsubscriptionpendingcmds. Isso retornará informações de monitoração para todos os comandos pendentes, de todas as assinaturas que usam esse Distribuidor.This returns monitoring information for all commands pending for all subscriptions using this Distributor. Para limitar o conjunto de resultados aos comandos pendentes das assinaturas pertencentes a um único Publicador, publicação ou banco de dados publicado, especifique @publisher, @subscriber, @publicationou @publisher_db, respectivamente.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.

Para monitorar as alterações de mesclagem a espera de serem carregadas ou baixadasTo monitor merge changes waiting to be uploaded or downloaded

  1. No Publicador do banco de dados de publicação, execute sp_showpendingchanges.At the Publisher on the publication database, execute sp_showpendingchanges. Isso retornará um conjunto de resultados que mostra informações sobre as alterações esperando para ser replicadas nos Assinantes.This returns a result set showing information on changes that are waiting to be replicated to Subscribers. Para limitar o conjunto de resultados às mudanças pertencentes a um único Publicador, publicação ou artigo, especifique @publication ou @article, respectivamente.To limit the result set to changes that belong to a single publication or article, specify @publication or @article, respectively.

  2. Em um Assinante, no banco de dados da assinatura, execute sp_showpendingchanges.At a Subscriber on the subscription database, execute sp_showpendingchanges. Isso retornará um conjunto de resultados que mostra informações sobre as alterações esperando para ser replicadas no Publicador.This returns a result set showing information on changes that are waiting to be replicated to the Publisher. Para limitar o conjunto de resultados às mudanças pertencentes a um único Publicador, publicação ou artigo, especifique @publication ou @article, respectivamente.To limit the result set to changes that belong to a single publication or article, specify @publication or @article, respectively.

Para monitorar sessões do Merge AgentTo monitor Merge Agent sessions

  1. No Distribuidor do banco de dados de distribuição, execute sp_replmonitorhelpmergesession.At the Distributor on the distribution database, execute sp_replmonitorhelpmergesession. Isso retornará informações de monitoração, inclusive Session_id, em todas as sessões do Merge Agent de todas as assinaturas que usam esse Distribuidor.This returns monitoring information, including Session_id, on all Merge Agent sessions for all subscriptions using this Distributor. Você também pode obter o Session_id consultando a tabela do sistema MSmerge_sessions .You can also obtain Session_id by querying the MSmerge_sessions system table.

  2. No Distribuidor, no banco de dados de distribuição, execute sp_replmonitorhelpmergesession.At the Distributor on the distribution database, execute sp_replmonitorhelpmergesessiondetail. Especifique um valor de Session_id da etapa 1 para @session_id.Specify a Session_id value from step 1 for @session_id. Isso exibirá informações de monitoramento detalhadas sobre a sessão.This displays detailed monitor information about the session.

  3. Repita a etapa 2 para cada sessão que interessar.Repeat step 2 for each session of interest.

Para monitorar sessões do Merge Agent para assinatura pull do AssinanteTo monitor Merge Agent sessions for pull subscriptions from the Subscriber

  1. No Assinante, no banco de dados da assinatura, execute sp_replmonitorhelpmergesession.At the Subscriber on the subscription database, execute sp_replmonitorhelpmergesession. Para uma assinatura determinada, especifique @publisher, @publicatione o nome do banco de dados de publicação para @publisher_db.For a given subscription, specify @publisher, @publication, and the name of the publication database for @publisher_db. Isso retornará informações de monitoração das últimas cinco sessões do Merge Agent para essa assinatura.This returns monitoring information for the last five Merge Agent sessions for this subscription. Observe que o valor de Session_id para as sessões que interessarem, no conjunto de resultados.Note the value of Session_id for sessions of interest in the result set.

  2. No Assinante, no banco de dados da assinatura, execute sp_replmonitorhelpmergesessiondetail.At the Subscriber on the subscription database, execute sp_replmonitorhelpmergesessiondetail. Especifique um valor de Session_id da etapa 1 para @session_id.Specify a Session_id value from step 1 for @session_id. Isso exibirá informações de monitoramento detalhadas sobre a sessão.This displays detailed monitoring information about the session.

  3. Repita a etapa 2 para cada sessão que interessar.Repeat step 2 for each session of interest.

Para exibir e modificar as métricas de limite do monitor para uma publicaçãoTo view and modify the monitor threshold metrics for a publication

  1. No Distribuidor, no banco de dados de distribuição, execute sp_replmonitorhelppublicationthresholds.At the Distributor on the distribution database, execute sp_replmonitorhelppublicationthresholds. Isso retornará o conjunto de limites de monitoramento, para todas as publicações que usam esse Distribuidor.This returns the monitoring thresholds set for all publications using this Distributor. Para limitar o conjunto de resultados e monitorar os limites das publicações pertencentes a um único Publicador, a um banco de dados publicado ou a uma única publicação, especifique @publisher, @publisher_dbou @publication, respectivamente.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. Observe o valor de Metric_id para qualquer limite que deva ser alterado.Note the value of Metric_id for any thresholds that must be changed. Para obter mais informações, consulte Set Thresholds and Warnings in Replication Monitor.For more information, see Set Thresholds and Warnings in Replication Monitor.

  2. No Distribuidor, no banco de dados de distribuição, execute sp_replmonitorchangepublicationthreshold.At the Distributor on the distribution database, execute sp_replmonitorchangepublicationthreshold. Especifique o seguinte, quando necessário:Specify the following as needed:

    • O valor Metric_id obtido na etapa 1 para @metric_id.The Metric_id value obtained in step 1 for @metric_id.

    • Um valor novo para a métrica de limite do monitor para @value.A new value for the monitor threshold metric for @value.

    • O valor 1 para @shouldalert , para ser registrado um alerta, quando esse limite for atingido, ou o valor 0 , se não for necessário um alerta.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.

    • O valor 1 para @mode , para habilitar a métrica de limite do monitor, ou um valor 2 para desabilitá-la.A value of 1 for @mode to enable the monitor threshold metric or a value of 2 to disable it.

RMO (Replication Management Objects) Replication Management Objects (RMO)

Para monitorar uma assinatura para uma publicação de mesclagem no AssinanteTo monitor a subscription to a merge publication at the Subscriber

  1. Crie uma conexão com o Assinante usando a classe ServerConnection.Create a connection to the Subscriber by using the ServerConnection class.

  2. Crie uma instância da classe MergeSubscriberMonitor e defina as propriedades Publisher, Publication, PublisherDB e SubscriberDB para a assinatura e defina propriedade ConnectionContext para a ServerConnection criada na etapa 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. Chame um dos métodos seguintes para retornar informações sobre as sessões do Merge Agent para essa assinatura:Call one of the following methods to return information on Merge Agent sessions for this subscription:

  4. (Opcional) Chame RefreshSessionSummary para atualizar os dados do objeto MergeSessionSummary passado como mss ou chame RefreshSessionSummary para atualizar os dados no objeto DataRow passado como 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. Usando a id de sessão obtida na etapa 3, chame um dos métodos seguintes para retornar informações sobre os detalhes de uma sessão em particular:Using the session ID obtained in step 3, call one of the following methods to return information on the details of a particular session:

Para monitorar as propriedades de replicação para todas as publicações em um DistribuidorTo monitor replication properties for all publications at a Distributor

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection.Create a connection to the Distributor by using the ServerConnection class.

  2. Crie uma instância da classe ReplicationMonitor.Create an instance of the ReplicationMonitor class.

  3. Defina a propriedade ConnectionContext para a ServerConnection criada na etapa 1.Set the ConnectionContext property to the ServerConnection created in step 1.

  4. Chame o método LoadProperties para obter as propriedades do objeto.Call the LoadProperties method to get the properties of the object.

  5. Execute um ou mais dos métodos seguintes para retornar informações de replicação para todos os Publicador que usam esse Distribuidor.Execute one or more of the following methods to return replication information for all Publishers that use this Distributor.

Para monitorar as propriedades de publicação para um Publicador específico no DistribuidorTo monitor publication properties for a specific Publisher at the Distributor

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection.Create a connection to the Distributor by using the ServerConnection class.

  2. Obtenha um objeto PublisherMonitor de uma das seguintes maneiras.Get a PublisherMonitor object in one of these ways.

  3. Execute um ou mais dos métodos a seguir para retornar informações de replicação para todas as publicações que pertençam a esse Publicador.Execute one or more of the following methods to return replication information for all publications that belong to this Publisher.

Para monitorar as propriedades para uma publicação específica no DistribuidorTo monitor properties for a specific publication at the Distributor

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection.Create a connection to the Distributor by using the ServerConnection class.

  2. Obtenha um objeto PublicationMonitor de uma das seguintes maneiras.Get a PublicationMonitor object in one of these ways.

  3. Execute um ou mais dos métodos seguintes para retornar informações sobre essa publicação.Execute one or more of the following methods to return information about this publication.

Para monitorar os comandos transacionais que estão esperando para serem aplicados no Assinante.To monitor transactional commands that are waiting to be applied at the Subscriber

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection.Create a connection to the Distributor by using the ServerConnection class.

  2. Obtenha um objeto PublicationMonitor de uma das seguintes maneiras.Get a PublicationMonitor object in one of these ways.

  3. Execute o método TransPendingCommandInfo, que retorna um objeto PendingCommandInfo.Execute the TransPendingCommandInfo method, which returns a PendingCommandInfo object.

  4. Use as propriedades desse objeto PendingCommandInfo para determinar o número estimado de comandos pendentes e o tempo que levará para completar a entrega desses comandos.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.

Para definir os limites de aviso de monitoração para uma publicaçãoTo set the monitor warning thresholds for a publication

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection.Create a connection to the Distributor by using the ServerConnection class.

  2. Obtenha um objeto PublicationMonitor de uma das seguintes maneiras.Get a PublicationMonitor object in one of these ways.

  3. Execute o método EnumMonitorThresholds.Execute the EnumMonitorThresholds method. Anote as configurações de limite atuais na ArrayList retornada de objetos MonitorThreshold.Note the current threshold settings in the returned ArrayList of MonitorThreshold objects.

  4. Execute o método ChangeMonitorThreshold.Execute the ChangeMonitorThreshold method. Passe os seguintes parâmetros:Pass the following parameters:

    • metricID – um valor Int32 que representa a métrica de limite de monitoramento da tabela a seguir:metricID - an Int32 value that represents the monitoring threshold metric from the following table:

      ValueValue DescriçãoDescription
      11 expiration - monitora a expiração iminente de assinaturas para publicações transacionais.expiration - monitors for imminent expiration of subscriptions to transactional publications.
      22 latency - monitora o desempenho de assinaturas para publicações transacionais.latency - monitors for the performance of subscriptions to transactional publications.
      44 mergeexpiration - monitora a expiração iminente de assinaturas para publicações de mesclagem.mergeexpiration - monitors for imminent expiration of subscriptions to merge publications.
      55 mergeslowrunduration - monitora a duração de sincronizações de mesclagem em conexões da baixa largura da banda (discadas).mergeslowrunduration - monitors the duration of merge synchronizations over low-bandwidth (dialup) connections.
      66 mergefastrunduration - monitora a duração de sincronizações de mesclagem em conexões da alta largura da banda (LAN).mergefastrunduration - monitors the duration of merge synchronizations over high-bandwidth (LAN) connections.
      77 mergefastrunspeed - monitora a taxa de sincronizações de mesclagem em conexões de alta largura da banda (LAN).mergefastrunspeed - monitors the synchronization rate of merge synchronizations over high-bandwidth (LAN) connections.
      88 mergeslowrunspeed - monitora a taxa de sincronizações de mesclagem em conexões de baixa largura da banda (discadas).mergeslowrunspeed - monitors the synchronization rate of merge synchronizations over low-bandwidth (dialup) connections.
    • enable – valor Boolean que indica se a métrica está habilitada para a publicação.enable - Boolean value that indicates whether the metric is enabled for the publication.

    • thresholdValue - valor inteiro que define o limite.thresholdValue - integer value that sets the threshold.

    • shouldAlert - inteiro que indica se esse limite deve gerar um alerta.shouldAlert - integer that indicates whether this threshold should generate an alert.