Questo monitoraggio rileva se in una destinazione di log shipping non è stato ripristinato un log entro la soglia definita nella configurazione per il log shipping.
Si noti che il log shipping non è supportato da alcuna edizione di SQL Server Express.
Questo monitoraggio rileva se in una destinazione di log shipping non è stato ripristinato un log entro la soglia definita nella configurazione per il log shipping. Quando si verifica questa condizione, il monitoraggio passerà a uno stato critico. Una volta che l'esecuzione del ripristino dei log riprende entro le soglie definite, il monitoraggio torna a uno stato integro. Per impostazione predefinita, questo monitoraggio genera avvisi se si trova in uno stato di errore.
Il log shipping non è stato sincronizzato entro la soglia per il ripristino. Per soglia si intende il numero di minuti che possono trascorrere tra le operazioni di ripristino prima che venga generato un messaggio.
Per risolvere il problema:
Verificare che il servizio SQL Server Agent sia in esecuzione per l'istanza del server secondario e che il processo di ripristino del database secondario sia abilitato e pianificato per l'esecuzione a intervalli appropriati.
È possibile che si sia verificato un errore relativo al processo di ripristino nel server secondario. In questo caso, verificare la cronologia processo del processo di ripristino per individuarne la causa.
È possibile che il processo di ripristino del log shipping, che viene eseguito nell'istanza del server secondario, non sia in grado di connettersi all'istanza del server di monitoraggio per aggiornare la tabella log_shipping_monitor_secondary. L'errore potrebbe essere causato da un problema di autenticazione tra l'istanza del server di monitoraggio e l'istanza del server secondario.
È possibile che la soglia di avviso per il backup non sia corretta. In una situazione ideale, la soglia è impostata su un valore pari ad almeno tre volte la frequenza del processo di ripristino. Se si cambia la frequenza del processo di ripristino dopo aver configurato e reso operativo il log shipping, sarà necessario aggiornare di conseguenza la soglia di avviso per il backup.
Quando l'istanza del server di monitoraggio passa alla modalità offline e quindi torna alla modalità online, la tabella log_shipping_monitor_secondary non viene aggiornata con i valori correnti prima dell'esecuzione del processo del messaggio di avviso. È quindi possibile che durante un processo di ripristino venga generato l'errore 14421 "Non è stato possibile trovare un file di backup del log applicabile al database secondario". In tale circostanza l'ora di ripristino non viene aggiornata. In questo caso l'errore può dipendere da un problema relativo al processo di copia.
Per aggiornare le tabelle di monitoraggio con i dati più recenti del database secondario, eseguire sp_refresh_log_shipping_monitor nell'istanza del server secondario.
Nell'istanza del server secondario o di monitoraggio la data o l'ora non è corretta. Questo problema può causare la generazione di messaggi di avviso. È possibile che in uno dei due server sia stata modificata la data o l'ora di sistema.
Nota: fusi orari diversi per le due istanze del server non costituiscono un problema.
Argomento relativo al log shipping nella documentazione online di SQL Server:
http://go.microsoft.com/fwlink/?LinkId=799310
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ì |
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 |
Tempo di sincronizzazione | Ora di sincronizzazione specificata usando il formato a 24 ore. Può essere omessa. |
|
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.Linux.Database | ||
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.Linux.MonitorType.Database.LogShipping | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.Linux.LogShippingDestinationMonitor" Accessibility="Public" Enabled="true" Target="SqlDiscL!Microsoft.SQLServer.Linux.Database" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Linux.MonitorType.Database.LogShipping" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Linux.LogShippingDestinationMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='Message']$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="DestOutOfSync" MonitorTypeStateID="Bad" HealthState="Error"/>
<OperationalState ID="DestInSync" MonitorTypeStateID="Good" HealthState="Success"/>
</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>
<DatabaseName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<LogShippingType>1</LogShippingType>
</Configuration>
</UnitMonitor>