Carico degli agenti di replica nel Sottoscrittore

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

Caricamento degli agenti di replica (distribuzione e merge) nel sottoscrittore. Si noti che SQL Server Agent non è disponibile per le edizioni di SQL Server Express. Questo monitoraggio è pertanto disabilitato per le istanze di tali edizioni.

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}%.

Si noti che SQL Server Agent non è disponibile per le edizioni di SQL Server Express. Questo monitoraggio è pertanto disabilitato per le istanze di tali edizioni.

Cause

Risoluzioni

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 server 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

Priorità avviso

Definisce la priorità dell'avviso.

Normale

Gravità avviso

Definisce la gravità dell'avviso.

Errore

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

Ora di sincronizzazione

Ora di sincronizzazione

 

Timeout (secondi)

Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito.

200

Timeout per la connessione di database (secondi)

Il flusso di lavoro avrà esito negativo e registrerà un evento se non riesce ad accedere al database durante il periodo specificato.

15

Soglia di avviso

Soglia di avviso

3

Element properties:

TargetMicrosoft.SQLServer.Replication.Windows.Subscriber
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Replication.Windows.MonitorType.DistributorAgentsLoad
RemotableTrue
AccessibilityPublic
Alert Message
Replica di MSSQL per Windows: 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.Core.RunAs.Monitoring

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Replication.Windows.Monitor.SubscriberAgentsLoad" Accessibility="Public" Enabled="true" Target="SQLReplWD!Microsoft.SQLServer.Replication.Windows.Subscriber" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Replication.Windows.MonitorType.DistributorAgentsLoad" ConfirmDelivery="false" RunAs="SqlCoreLib!Microsoft.SQLServer.Core.RunAs.Monitoring">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Replication.Windows.Monitor.SubscriberAgentsLoad.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/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>
<MachineName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/InstanceName$</InstanceName>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<ConnectionString>$Target/Host/Property[Type='SqlCoreLib!Microsoft.SQLServer.Core.DBEngine']/ConnectionString$</ConnectionString>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<WarningThreshold>3</WarningThreshold>
<ErrorThreshold>4</ErrorThreshold>
<LastHours>24</LastHours>
<CategoryList>Distribution, Merge</CategoryList>
<ExcludeCategoryList/>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>200</TimeoutSeconds>
</Configuration>
</UnitMonitor>