Monitore programaticamente a replicação

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

O Replication Monitor é uma ferramenta gráfica que permite monitorar uma topologia de replicação. É possível acessar os mesmos dados de monitoração programaticamente usando o RMO (Replication Management Objects) ou procedimentos armazenados de replicação do Transact-SQL. Esses objetos permitem programar as seguintes tarefas:

  • Monitorar o estado de Publicadores, publicações e assinaturas.

  • Monitorar as sessões do Merge Agent em um ou mais Assinantes.

  • Monitorar os comandos transacionais que estão esperando para serem aplicados em um ou mais Assinantes.

  • Definir os limites métricos que determinam quando uma publicação requer intervenção.

  • Monitorar o estado de tokens de rastreamento.

Neste tópico:

Transact-SQL

RMO (Replication Management Objects)

Transact-SQL

Para monitorar Publicador, publicações e assinatura a partir do Distribuidor

  1. No Distribuidor, no banco de dados de distribuição, execute sp_replmonitorhelppublisher. Isso retornará informações para todos os Publicadores que usarem esse Distribuidor. Para limitar o conjunto de resultados a um único Publicador, especifique @publisher.

  2. No Distribuidor do banco de dados de distribuição, execute sp_replmonitorhelppublication. Isso retornará informações para todas as publicações que usarem esse Distribuidor. Para limitar o conjunto de resultados a um único Publicador, publicação ou banco de dados publicado, especifique @publisher, @publicationou @publisher_db, respectivamente.

  3. No Distribuidor do banco de dados de distribuição, execute sp_replmonitorhelpsubscription. Isso retornará informações para todas as assinaturas que usarem esse Distribuidor. 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.

Para monitorar os comandos transacionais que estão esperando para serem aplicados no Assinante.

  1. No Distribuidor do banco de dados de distribuição, execute sp_replmonitorsubscriptionpendingcmds. Isso retornará informações de monitoração para todos os comandos pendentes, de todas as assinaturas que usam esse Distribuidor. 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.

Para monitorar as alterações de mesclagem a espera de serem carregadas ou baixadas

  1. No Publicador do banco de dados de publicação, execute sp_showpendingchanges. Isso retornará um conjunto de resultados que mostra informações sobre as alterações esperando para ser replicadas nos Assinantes. Para limitar o conjunto de resultados às mudanças pertencentes a um único Publicador, publicação ou artigo, especifique @publication ou @article, respectivamente.

  2. Em um Assinante, no banco de dados da assinatura, execute sp_showpendingchanges. Isso retornará um conjunto de resultados que mostra informações sobre as alterações esperando para ser replicadas no Publicador. Para limitar o conjunto de resultados às mudanças pertencentes a um único Publicador, publicação ou artigo, especifique @publication ou @article, respectivamente.

Para monitorar sessões do Merge Agent

  1. No Distribuidor do banco de dados de distribuição, 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. Você também pode obter o Session_id consultando a tabela do sistema MSmerge_sessions .

  2. No Distribuidor, no banco de dados de distribuição, execute sp_replmonitorhelpmergesession. Especifique um valor de Session_id da etapa 1 para @session_id. Isso exibirá informações de monitoramento detalhadas sobre a sessão.

  3. Repita a etapa 2 para cada sessão que interessar.

Para monitorar sessões do Merge Agent para assinatura pull do Assinante

  1. No Assinante, no banco de dados da assinatura, execute sp_replmonitorhelpmergesession. Para uma assinatura determinada, especifique @publisher, @publicatione o nome do banco de dados de publicação para @publisher_db. Isso retornará informações de monitoração das últimas cinco sessões do Merge Agent para essa assinatura. Observe que o valor de Session_id para as sessões que interessarem, no conjunto de resultados.

  2. No Assinante, no banco de dados da assinatura, execute sp_replmonitorhelpmergesessiondetail. Especifique um valor de Session_id da etapa 1 para @session_id. Isso exibirá informações de monitoramento detalhadas sobre a sessão.

  3. Repita a etapa 2 para cada sessão que interessar.

Para exibir e modificar as métricas de limite do monitor para uma publicação

  1. No Distribuidor, no banco de dados de distribuição, execute sp_replmonitorhelppublicationthresholds. Isso retornará o conjunto de limites de monitoramento, para todas as publicações que usam esse Distribuidor. 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. Observe o valor de Metric_id para qualquer limite que deva ser alterado. Para obter mais informações, consulte Set Thresholds and Warnings in Replication Monitor.

  2. No Distribuidor, no banco de dados de distribuição, execute sp_replmonitorchangepublicationthreshold. Especifique o seguinte, quando necessário:

    • O valor Metric_id obtido na etapa 1 para @metric_id.

    • Um valor novo para a métrica de limite do monitor para @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.

    • Um valor 1 para @mode , para habilitar a métrica de limite do monitor, ou um valor 2 para desabilitá-la.

RMO (Replication Management Objects)

Para monitorar uma assinatura para uma publicação de mesclagem no Assinante

  1. Crie uma conexão com o Assinante usando a classe ServerConnection .

  2. Crie uma instância da classe MergeSubscriberMonitor e defina as propriedades Publisher, Publication, PublisherDB, SubscriberDB para a assinatura, e defina a propriedade ConnectionContext como ServerConnection criado na etapa 1.

  3. Chame um dos métodos seguintes para retornar informações sobre as sessões do Merge Agent para essa assinatura:

    • GetSessionsSummary - retorna uma matriz de objetos MergeSessionSummary com informações até as últimas cinco sessões do Merge Agent. Observe o valor SessionId para qualquer sessão do seu interesse.

    • GetSessionsSummary - retorna uma matriz de objetos MergeSessionSummary com informações das sessões do Merge Agent que ocorreram durante o número de horas passadas no parâmetro hours (até as últimas cinco sessões). Observe o valor SessionId para qualquer sessão do seu interesse.

    • GetLastSessionSummary - retorna um objeto MergeSessionSummary com informações sobre a última sessão do Merge Agent. Observe o valor de SessionId para esta sessão.

    • GetSessionsSummaryDataSet - retorna uma matriz de objetos DataSet com informações até as últimas cinco sessões do Merge Agent, uma em cada linha. Observe o valor da coluna Session_id para qualquer sessão do seu interesse.

    • GetLastSessionSummaryDataRow - retorna um objeto DataRow com informações sobre a última sessão do Merge Agent. Observe o valor da coluna Session_id para essa sessão.

  4. (Opcional) Chame o RefreshSessionSummary para atualizar os dados para o objeto MergeSessionSummary passado como mss, ou chame RefreshSessionSummary para atualizar os dados no objeto DataRow passado como 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:

Para monitorar as propriedades de replicação para todas as publicações em um Distribuidor

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection .

  2. Criar uma instância da classe ReplicationMonitor.

  3. Defina a propriedade ConnectionContext como ServerConnection criada na etapa 1.

  4. Chame o método LoadProperties para obter as propriedades do objeto.

  5. Execute um ou mais dos métodos seguintes para retornar informações de replicação para todos os Publicador que usam esse Distribuidor.

Para monitorar as propriedades de publicação para um Publicador específico no Distribuidor

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection .

  2. Consiga um objeto PublisherMonitor em um desses modos.

  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.

Para monitorar as propriedades para uma publicação específica no Distribuidor

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection .

  2. Consiga um objeto PublicationMonitor em um desses modos.

  3. Execute um ou mais dos métodos seguintes para retornar informações sobre essa publicação.

Para monitorar os comandos transacionais que estão esperando para serem aplicados no Assinante.

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection .

  2. Consiga um objeto PublicationMonitor em um desses modos.

  3. Execute o método TransPendingCommandInfo que retorna um objeto PendingCommandInfo .

  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.

Para definir os limites de aviso de monitoração para uma publicação

  1. Crie uma conexão com o Distribuidor usando a classe ServerConnection .

  2. Consiga um objeto PublicationMonitor em um desses modos.

  3. Execute o método EnumMonitorThresholds . Observe as configurações de limite atuais no ArrayList retornado de objetos MonitorThreshold .

  4. Execute o método ChangeMonitorThreshold . Passe os seguintes parâmetros:

    • metricID - um valor Int32 que representa a métrica de limite de monitoração da tabela a seguir:

      Valor Description
      1 expiration - monitora a expiração iminente de assinaturas para publicações transacionais.
      2 latency - monitora o desempenho de assinaturas para publicações transacionais.
      4 mergeexpiration - monitora a expiração iminente de assinaturas para publicações de mesclagem.
      5 mergeslowrunduration - monitora a duração de sincronizações de mesclagem em conexões da baixa largura da banda (discadas).
      6 mergefastrunduration - monitora a duração de sincronizações de mesclagem em conexões da alta largura da banda (LAN).
      7 mergefastrunspeed - monitora a taxa de sincronizações de mesclagem em conexões de alta largura da banda (LAN).
      8 mergeslowrunspeed - monitora a taxa de sincronizações de mesclagem em conexões de baixa largura da banda (discadas).
    • enable - Boolean valor que indica se a métrico está habilitado para a publicação.

    • thresholdValue - valor inteiro que define o limite.

    • shouldAlert - inteiro que indica se esse limite deve gerar um alerta.