Esse monitor verifica a latência dos comandos no banco de dados de Distribuição aguardando a entrega para os Assinantes. Observe que esse monitor está desabilitado para Assinaturas de Mesclagem.
Esse monitor coleta informações similares ao monitor de replicação que exibe os comandos pendentes na guia Comandos Não Distribuídos, juntamente com o tempo previsto para a entrega dos comandos. Se o tempo previsto for maior do que o tempo de limite, um alerta será acionado para exibir a informações. Observe que o monitor está desabilitado para Assinaturas de Mesclagem.
http://msdn.microsoft.com/library/ms183374.aspx
O agente de Distribuição pode ter parado.
Pode haver grandes quantidades de transações pendentes, com muitos comandos confirmados no banco de dados do Publicador e replicados no banco de dados de distribuição;
Problemas de desempenho podem ter ocorrido no agente de Distribuição ao ler do banco de dados de distribuição ou ao gravar no banco de dados do Assinante.
Se -MaxDeliveredTransactions e -Continuous forem ambos especificados, O Agente de Distribuição entrega o número determinado de transações e depois é interrompido (mesmo se -Continuous for especificado). Você deve reiniciar o Agente de Distribuição após o trabalho ser completado.
Se o alerta ocorrer devido a um grande volume de transações no banco de dados do Publicador, avalie a hora prevista de entrega. Considere reinicializar a assinatura se o tempo previsto de entrega for maior que criar e aplicar um instantâneo.
Se houver problemas de desempenho no agente de distribuição ao ler do banco de dados de distribuição, execute atualização de estatísticas com fullscan nas tabelas de distribuição.
Se o agente de distribuição estiver com problemas de desempenho ao gravar no Assinante, verifique e resolva todos os bloqueios ou esperas por recursos no banco de dados do Assinante.
Teste se a alteração dos valores de parâmetros abaixo pode ajudar no desempenho do agente de distribuição:
CommitBatchSize
O número de transações a serem emitidas ao Assinante antes da emissão de uma instrução COMMIT. O padrão é 100.
QueryTimeOut
O número de segundos antes do tempo limite da consulta. O padrão é 1.800 segundos.
SubscriptionStreams
O número de conexões permitidas por Agente de Distribuição para a aplicação de lotes de alterações em paralelo a um Assinante. Para um Publicador do SQL Server, há suporte a um intervalo de valores de 1 a 64
https://msdn.microsoft.com/library/ms173804.aspx)
Nome | Descrição | Valor Padrão |
Prioridade do Alerta | Define a Prioridade do Alerta. | Normal |
Severidade do Alerta | Define a Severidade do Alerta. | Aviso |
Habilitado | Habilita ou desabilita o fluxo de trabalho. | Sim |
Gera Alertas | Define se o fluxo de trabalho gera ou não um Alerta. | Sim |
Intervalo (segundos) | O intervalo de tempo recorrente em segundos no qual executar o fluxo de trabalho. | 300 |
Tempo de Sincronização | Tempo de Sincronização |
|
Limite | Limite | 60 |
Tempo limite (segundos) | Especifica a quantidade de tempo que o fluxo de trabalho tem permissão para executar antes de ser fechado e marcado como com falha. | 200 |
Tempo limite da conexão de banco de dados (segundos) | O fluxo de trabalho falhará e registrará um evento, se ele não conseguir acessar o banco de dados durante o período especificado. | 15 |
Target | Microsoft.SQLServer.Replication.Windows.Subscription | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.Replication.Windows.MonitorType.SubscriptionLongEstimatedTime | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Core.RunAs.Monitoring |
<UnitMonitor ID="Microsoft.SQLServer.Replication.Windows.Monitor.SubscriptionLongEstimatedTimeMonitor" Accessibility="Public" Enabled="true" Target="SQLReplWD!Microsoft.SQLServer.Replication.Windows.Subscription" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Replication.Windows.MonitorType.SubscriptionLongEstimatedTime" ConfirmDelivery="false" RunAs="SqlCoreLib!Microsoft.SQLServer.Core.RunAs.Monitoring">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Replication.Windows.Monitor.SubscriptionLongEstimatedTime.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription']/SubscriptionName$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='EstimatedTime']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</InstanceName>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<ConnectionString>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Distributor$</ConnectionString>
<MonitoringType>$Target/Host/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SubscriptionType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Type$</SubscriptionType>
<PublisherName>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Publisher$</PublisherName>
<Subscriber>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/Subscriber$</Subscriber>
<PublisherDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/PublicationDatabase$</PublisherDb>
<SubscriberDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/SubscriptionDatabase$</SubscriberDb>
<Publication>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/PublicationName$</Publication>
<ReplicationType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Core.GenericSubscription"]/ReplicationType$</ReplicationType>
<EstimatedTimeSecondsThreshold>60</EstimatedTimeSecondsThreshold>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>200</TimeoutSeconds>
<CheckMachineAndInstanceName>false</CheckMachineAndInstanceName>
</Configuration>
</UnitMonitor>