Questo monitoraggio controlla lo stato dei servizi dell'agente di snapshot per tutte le pubblicazioni nel server di distribuzione.
L'agente di snapshot della replica è un eseguibile che prepara i file di snapshot contenenti lo schema e i dati delle tabelle pubblicate e oggetti di database, archivia i dati nella cartella di snapshot e registra i processi di sincronizzazione nel database di distribuzione.
Gli errori dell'agente di snapshot possono essere causati da uno dei motivi seguenti:
Spazio esaurito nella cartella degli snapshot.
Autorizzazioni di scrittura mancanti nella cartella degli snapshot.
Impossibilità di stabilire una connessione con il database del server di pubblicazione.
L'account dell'agente del server di pubblicazione potrebbe non essere membro del ruolo predefinito del database db_owner per il database del server di distribuzione.
L'agente non riesce a connettersi al server di distribuzione.
Timeout della query.
Per risolvere i problemi dell'agente, verificare quanto segue:
Assicurarsi che l'account dell'agente di snapshot disponga di autorizzazioni di lettura/scrittura nella cartella di snapshot
Assicurarsi che lo spazio disponibile nel supporto per la cartella di snapshot sia sufficiente
Assicurarsi che l'account dell'agente del server di pubblicazione sia membro del ruolo predefinito del database db_owner
Assicurarsi che l'agente di snapshot non sia bloccato da altri processi (SPID). A tale scopo, usare il monitoraggio attività o la stored procedure sp_who2: DMV sys.dm_exec_requests e sys.dm_os_waiting_tasks.
È possibile eseguire una query sulle tabelle mssnapshot_agents e mssnapshot_history nel database di distribuzione per ottenere maggiori informazioni sull'errore dell'agente. Anche la tabella Msrepl_errors registra informazioni sui messaggi di errore dell'agente.
http://technet.microsoft.com/library/ms146939.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.SnapshotAgentState" 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.SnapshotAgentState.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>Snapshot$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>