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.
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.
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 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.
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. | 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 |
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 |
Target | Microsoft.SQLServer.Replication.Windows.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.Replication.Windows.MonitorType.DistributorAgentsLoad | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Core.RunAs.Monitoring |
<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>