Carico degli agenti di replica (distribuzione e merge) nel sottoscrittore
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}%.
Errori di SQL Server Agent e tentativi di processi dell'agente di replica
Volume elevato di comandi e transazioni su grandi quantità di dati.
Prestazioni dei processi dell'agente rallentate.
Rete lenta tra i server che fanno parte della topologia di replica.
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.
Nome | Descrizione | Valore predefinito |
Abilitato | Abilita o disabilita il flusso di lavoro | Sì |
Soglia di errore | Soglia di errore | 4 |
Genera avvisi | Definisce se il flusso di lavoro genera un avviso | Sì |
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 |
Target | Microsoft.SQLServer.2012.Replication.Subscriber | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2012.Replication.MonitorType.DistributorAgentsLoad | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<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>