Este monitor comprueba la latencia de comandos en la base de datos de distribución que se encuentra a la espera de ser entregada a los suscriptores.
Este monitor recopila información similar al monitor de replicación que muestra los comandos pendientes en la pestaña de comandos no distribuidos junto con el tiempo estimado de entrega de dichos comandos. Si el tiempo estimado es superior que el de un período de umbral, se activará una alerta para visualizar la información.
http://msdn.microsoft.com/library/ms183374.aspx
Es posible que se detenga el agente de distribución.
Es posible que haya grandes cantidades de transacciones pendientes con muchos comandos confirmados en la base de datos del publicador y que se replican a la base de datos de distribución;
Es posible que el agente de distribución esté experimentando problemas de rendimiento durante la lectura de la base de datos de distribución o durante la escritura en la base de datos del suscriptor.
Si se especifican -MaxDeliveredTransactions y -Continuous, el agente de distribución entrega el número especificado de transacciones y, a continuación, se detiene (aunque se haya especificado -Continuous). Debe reiniciar el agente de distribución una vez completado el trabajo.
Si la alerta se debe a grandes volúmenes de transacciones en la base de datos del publicador, evalúe el tiempo estimado de la entrega. Considere la posibilidad de reinicializar la suscripción si el tiempo de entrega estimado es superior que el necesario para crear y aplicar una instantánea.
Si el agente de distribución está experimentando problemas de rendimiento durante la lectura de la base de datos de distribución, ejecute las estadísticas de actualización mediante la opción fullscan en las tablas de distribución.
Si el agente de distribución está experimentando problemas de rendimiento durante la escritura en el suscriptor, compruebe y solucione los bloqueos o esperas de recursos en la base de datos del suscriptor.
Pruebe si el cambio de los valores de los parámetros siguientes pueden ayudar a mejorar el rendimiento del agente de distribución:
CommitBatchSize
El número de transacciones a emitir al suscriptor antes de emitir una instrucción COMMIT. El valor predeterminado es 100.
QueryTimeOut
Número de segundos transcurridos antes de que se supere el tiempo de espera de la consulta. El valor predeterminado es de 1800 segundos.
SubscriptionStreams
Número de conexiones permitidas por agente de distribución para aplicar lotes de cambios en paralelo a un suscriptor. Para un publicador de SQL Server, se admite un rango de valores comprendido entre 1 y 64
https://msdn.microsoft.com/library/ms173804.aspx)
Nombre | Descripción | Valor predeterminado |
Prioridad de alerta | Define la prioridad de la alerta. | Normal |
Gravedad de alerta | Define la gravedad de la alerta. | Advertencia |
Habilitado | Habilita o deshabilita el flujo de trabajo. | Sí |
Genera alertas | Define si el flujo de trabajo genera una alerta. | Sí |
Intervalo (segundos) | Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo. | 300 |
Tiempo de sincronización | Tiempo de sincronización |
|
Umbral | Umbral | 60 |
Tiempo de espera (segundos) | Especifica el tiempo durante el que se puede ejecutar el flujo de trabajo antes de que se cierre y se marque como error. | 300 |
Tiempo de expiración de la conexión de base de datos (segundos) | Se producirá un error en el flujo de trabajo y se registrará un evento si no puede obtener acceso a la base de datos durante el período especificado. | 15 |
Target | Microsoft.SQLServer.2012.Replication.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.2012.Replication.MonitorType.SubscriptionLongEstimatedTime | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.SubscriptionLongEstimatedTimeMonitor" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Subscription" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Replication.MonitorType.SubscriptionLongEstimatedTime" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Replication.Monitor.SubscriptionLongEstimatedTime.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.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>
<SqlTimeout>15</SqlTimeout>
<ConnectionString>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Distributor$</ConnectionString>
<SubscriptionType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Type$</SubscriptionType>
<PublisherName>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Publisher$</PublisherName>
<Subscriber>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/Subscriber$</Subscriber>
<PublisherDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/PublicationDatabase$</PublisherDb>
<SubscriberDb>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/SubscriptionDatabase$</SubscriberDb>
<Publication>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/PublicationName$</Publication>
<ReplicationType>$Target/Property[Type="MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscription"]/ReplicationType$</ReplicationType>
<EstimatedTimeSecondsThreshold>60</EstimatedTimeSecondsThreshold>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>