Carico degli agenti di replica nel sottoscrittore.

Microsoft.SQLServer.2012.Replication.Monitor.SubscriberAgentsLoad (UnitMonitor)

Carico degli agenti di replica (distribuzione e merge) nel sottoscrittore

Knowledge Base article:

Riepilogo

Questo monitoraggio calcola il tempo di esecuzione totale di ogni agente di replica (distribuzione, merge) in un sottoscrittore per il periodo di tempo definito dalla soglia. Se il tempo di esecuzione totale di un agente supera la soglia definita, viene generato un avviso nel formato

Il sottoscrittore (nome: '{0}', server: '{1}') ha rilevato un utilizzo del {2}%.

Cause

Soluzioni

Aprire la cronologia processo dell'agente che esegue il tentativo per individuare eventuali messaggi di errore, quindi risolvere il problema.

Durante l'esecuzione del processo, eseguire la stored procedure sp_who2 e verificare se è bloccato da altre sessioni. In questo caso, risolvere il blocco o attendere il completamento dell'altra sessione.

Assicurarsi che la latenza di rete tra il database di distribuzione e il sottoscrittore (agente di distribuzione) non sia troppo elevata.

Identificare e ricercare tutte le query con esecuzione lenta.

Per assicurarsi che le statistiche siano aggiornate, eseguire la stored procedure sp_updatestats sui database di sottoscrizione. ( http://msdn.microsoft.com/library/ms173804.aspx)

Assicurarsi che gli indici nel database sottoscrittore non siano fortemente frammentati.

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Abilitato

Abilita o disabilita il flusso di lavoro

Soglia di errore

Soglia di errore

4

Genera avvisi

Definisce se il flusso di lavoro genera un avviso

Intervallo (secondi)

Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro.

300

Periodo di misurazione (ore)

Periodo di tempo usato per la misurazione (ore)

24

Timeout (secondi)

Timeout (secondi)

300

Ora di sincronizzazione

Ora di sincronizzazione

 

Soglia di avviso

Soglia di avviso

3

Element properties:

TargetMicrosoft.SQLServer.2012.Replication.Subscriber
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.Replication.MonitorType.DistributorAgentsLoad
RemotableTrue
AccessibilityPublic
Alert Message
Replica di MSSQL2012: Gli agenti di replica nel Sottoscrittore sono in esecuzione con un carico di lavoro elevato.
Il Sottoscrittore (nome: '{0}', server: '{1}') ha riscontrato un sovraccarico per {2} ore nelle ultime 24 ore.
{3}
RunAsMicrosoft.SQLServer.Replication.Monitoring.RunAs.Monitor

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2012.Replication.Monitor.SubscriberAgentsLoad" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2012.Replication.Subscriber" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Replication.MonitorType.DistributorAgentsLoad" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Replication.Monitor.SubscriberAgentsLoad.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscriber']/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscriber']/ConnectionString$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='LoadHours']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='Message']$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<SqlTimeout>300</SqlTimeout>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericSubscriber']/ConnectionString$</ConnectionString>
<WarningThreshold>3</WarningThreshold>
<ErrorThreshold>4</ErrorThreshold>
<LastHours>24</LastHours>
<CategoryList>Distribution, Merge</CategoryList>
<ExcludeCategoryList/>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>