Tenho uma editora Standard 2019 que atua como distribuidora própria, com cerca de 150 assinantes em todo o mundo. São 4 publicações, das quais apenas 2 estão ativas. As alterações de dados são muito limitadas (cerca de 5 gravações por dia). Os assinantes são todos da edição SQL Express.
Meu principal problema aqui é que muitas vezes algum agente de distribuição decide que não deseja iniciar corretamente; ou seja, o trabalho fica preso na execução do agente em um loop de nova tentativa. Quando olho para o monitor de replicação, a mensagem diz para procurar no histórico de trabalhos do agente. O histórico de tarefas do agente aponta para o monitor de replicação.
Já tentei aumentar o histórico e o detalhamento da saÃda, e enviar informações para o arquivo, para os agentes que estavam apresentando o problema, mas parece que isso só começa quando o agente passa da fase de inicialização.
Lendo on-line, encontrei um artigo antigo sobre o esgotamento do heap da área de trabalho, mas também parece que se refere ao WS anterior a 2016 (e estou executando o WS 2019), então não tenho certeza se isso realmente se aplica.
Pesquisas adicionais no Google não produziram nada de valor. Você conhece um método para depurar/solucionar esses problemas, exceto um ticket para a MS ou algum recurso para tentar seguir?
Edite conforme solicitado, aqui está uma cópia e colagem das mensagens que posso ver:
Monitor de replicação: Mensagens de erro:
- O agente 'PublisherName-PublicationName-SubscriberName-AgentID' está tentando novamente após um erro. 74 tentativas tentadas. Consulte o histórico de trabalhos do agente na pasta Trabalhos para obter mais detalhes.
Resultados de
SELECT jh.*FROM msdb.dbo.sysjobhistory jh
INNER JOIN distribution1.dbo.MSdistribution_agents da
ON da.job_id = jh.job_id
WHERE da.name = ''
ORDER BY jh.instance_id DESC
(captura de tela apenas da iteração mais recente)
Foram alguns dias de monitoramento e finalmente foi resolvido.
Posso confirmar o que disse no comentário acima - o esgotamento do heap da área de trabalho ainda é uma coisa nas versões mais recentes do Windows; infelizmente, as etapas de monitoramento descritas aqui https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/replication/sql-replication-agents-not-run não funcionam na versão mais recente do Windows.
Para mim, a proverbial arma fumegante foi um evento de nÃvel de informação no log do sistema, com a mensagem descrita no artigo (Pop-up do aplicativo: DISTRIB.exe - Erro do aplicativo: O aplicativo não pôde ser iniciado corretamente (0xc0000142). Clique em OK para fechar o aplicativo.)
O ID do evento é 26, pop-up do aplicativo de origem. Sendo um nÃvel de informação, significa que se você está acostumado a focar apenas em Avisos, Erros e CrÃticos, você sentirá falta disso.
A solução, para mim, foi passar do contÃnuo para o programado. No meu caso, fui a cada 10 minutos e escalonei as assinaturas para minimizar a chance de voltar à situação original, mas YMMV.
Espero que isso ajude alguém na natureza.