Como monitorar programaticamente a replicação (Programação Transact-SQL de replicação)

O Replication Monitor é uma ferramenta gráfica que permite monitorar uma topologia de replicação. Você pode acessar os mesmos dados monitorando programaticamente os procedimentos armazenados que usam a replicação. Esses procedimentos armazenados 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.

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, @publication ou @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, @publication ou @publisher_db, respectivamente.

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

  • 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, @publication ou @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, que pertencem 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, @publication e 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_db ou @publication, respectivamente. Observe o valor de Metric_id para qualquer limite que deva ser alterado. Para obter mais informações, consulte Definindo os limites e avisos no 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.