Questo monitoraggio controlla lo stato degli agenti di merge per tutte le sottoscrizioni nel server di distribuzione.
L'agente di merge della replica è un'utilità eseguibile che applica lo snapshot iniziale contenuto nelle tabelle di database ai Sottoscrittori. Esegue inoltre il merge delle modifiche dati incrementali che si sono verificate a livello del server di pubblicazione dopo la creazione dello snapshot iniziale e riconcilia i conflitti in base alle regole configurate o tramite un resolver personalizzato creato dall'utente.
Gli errori dell'agente di merge possono essere causati da uno dei motivi seguenti:
L'agente di merge non riesce a stabilire una connessione con il server di pubblicazione.
L'agente di merge non riesce a stabilire una connessione con il sottoscrittore.
I metadati della replica di tipo merge sono stati eliminati nel sottoscrittore. Questa condizione può verificarsi nel caso in cui l'agente di merge non abbia completato la sincronizzazione entro il periodo di memorizzazione definito.
La sottoscrizione è contrassegnata come scaduta.
Errori di timeout della query.
Errori di connettività di rete.
Non è possibile avviare l'agente di merge a causa dell'esaurimento della memoria per l'heap del desktop non interattivo.
Parametri non corretti passati all'eseguibile dell'agente.
Per risolvere il problema, verificare quanto segue:
L'agente di merge può connettersi sia al server di pubblicazione che al sottoscrittore. Assicurarsi che l'account dell'agente di merge venga aggiunto al ruolo predefinito db_owner nei database del server di pubblicazione e del sottoscrittore.
Quando la sottoscrizione è contrassegnata per la scadenza, inizializzarla di nuovo.
Non sono stati riscontrati problemi di connettività o di rete tra i server quando l'agente di merge è in esecuzione.
Se i metadati della sottoscrizione sono stati eliminati nel server di pubblicazione, eliminare la sottoscrizione e ricrearla.
Questo può verificarsi quando l'agente di merge non è stato sincronizzato entro il periodo di memorizzazione definito.
Verificare che vengano passati i parametri corretti all'agente di merge.
Eseguire una query sulle tabelle msmerge_agents e msmerge_history nel database di distribuzione per ottenere maggiori informazioni sull'errore dell'agente. Anche la tabella Msrepl_errors contiene informazioni sugli errori dell'agente.
Problema dell'heap del desktop
http://support.microsoft.com/kb/949296
Agente di merge della replica
http://msdn.microsoft.com/library/ms147839.aspx
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ì |
Durata stimata del processo | Soglia usata per controllare la conformità con la pianificazione processo | 15 |
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 |
Mostra i processi con stato sconosciuto | Include i processi con stato sconosciuto nell'output del monitoraggio e nel contesto dell'avviso. Ha effetto sull'integrità. | No |
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 |
Target | Microsoft.SQLServer.Replication.Windows.Distributor | ||
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.ReplicationAgentState | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Core.RunAs.Monitoring |
<UnitMonitor ID="Microsoft.SQLServer.Replication.Windows.Monitor.MergeAgentState" Accessibility="Public" Enabled="true" Target="SQLReplWD!Microsoft.SQLServer.Replication.Windows.Distributor" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Replication.Windows.MonitorType.ReplicationAgentState" ConfirmDelivery="false" RunAs="SqlCoreLib!Microsoft.SQLServer.Core.RunAs.Monitoring">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Replication.Windows.Monitor.MergeAgentState.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</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/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericDistributor']/ConnectionString$</ConnectionString>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<XPathName>Merge$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Core.GenericDistributor']/ConnectionString$</XPathName>
<ShowJobsWithUnknownState>false</ShowJobsWithUnknownState>
<EstimatedJobDuration>15</EstimatedJobDuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>200</TimeoutSeconds>
<CheckMachineAndInstanceName>true</CheckMachineAndInstanceName>
</Configuration>
</UnitMonitor>