Ce moniteur détecte lorsqu’un journal n’a pas été restauré dans la destination de la copie des journaux de transaction avant le seuil défini dans le cadre de la configuration de la copie des journaux de transaction.
La copie des journaux de transaction n’est pas compatible avec les éditions de SQL Server Express.
Cette analyse détecte lorsqu’un journal n’a pas été restauré dans la destination de la copie des journaux de transaction avant le seuil défini dans le cadre de la configuration de la copie des journaux de transaction. Lorsque cette situation se produit, l’analyse passe dans un état critique. Une fois que les restaurations de journaux reprennent et se situent avant les seuils définis, l’analyse retourne à un état sain. Par défaut, cette analyse génère des alertes lorsqu’elle est dans un état d’erreur.
La copie des journaux de transaction n'est plus synchronisée en cas de dépassement du seuil de restauration. Le seuil de restauration correspond au nombre de minutes qui peuvent s'écouler entre les opérations de restauration avant qu'un message soit généré.
Pour résoudre ce problème :
Assurez-vous que le service Agent SQL Server est en cours d'exécution pour l'instance du serveur secondaire et que le travail de restauration pour cette base de données secondaire est activé et est planifié pour s'exécuter à la fréquence appropriée.
Il est possible que le travail de restauration sur le serveur secondaire soit en échec. Dans ce cas, vérifiez l'historique des travaux de restauration pour déterminer la cause de l'échec.
Il se peut que le travail de restauration de la copie des journaux de transaction, qui s'exécute sur l'instance du serveur secondaire, ne puisse pas se connecter à l'instance du serveur moniteur pour mettre à jour la table log_shipping_monitor_secondary. Ceci peut être dû à un problème d'authentification entre l'instance du serveur moniteur et l'instance du serveur secondaire.
La valeur du seuil d'alerte de sauvegarde est peut-être incorrecte. Dans l'idéal, cette valeur doit être au moins trois fois supérieure à la fréquence du travail de restauration. Si vous modifiez la fréquence du travail de restauration une fois que la copie des journaux de transaction est configurée et fonctionnelle, la valeur du seuil d'alerte de sauvegarde doit être mise à jour en conséquence.
Lorsque l'instance du serveur moniteur est mise hors connexion et qu'elle revient ensuite en ligne, la table log_shipping_monitor_secondary n'est pas mise à jour avec les valeurs actuelles avant l'exécution du travail de message d'alerte. L'erreur 14421 peut survenir lorsqu'un travail de restauration est effectué et retourne le message « Impossible de trouver un fichier de sauvegarde du journal pouvant être appliqué à la base de données secondaire ». Dans ce cas, l'heure de restauration n'est pas mise à jour. La cause de l'erreur peut alors être liée à un problème du travail de copie.
Pour mettre à jour les tables du serveur moniteur afin qu'elles contiennent les données les plus récentes pour la base de données secondaire, exécutez sp_refresh_log_shipping_monitor sur l'instance du serveur secondaire.
La date ou l'heure est incorrecte sur l'instance du serveur secondaire ou du serveur moniteur. Ceci peut également générer des messages d'alerte. Il est possible que la date ou l'heure système ait été modifiée sur l'une des deux instances.
Remarque : une différence de fuseaux horaires entre les deux instances de serveur ne pose généralement aucun problème.
Rubrique sur la copie des journaux de transaction dans la documentation en ligne de SQL Server 2014 :
http://go.microsoft.com/fwlink/?LinkId=799279
Nom | Description | Valeur par défaut |
Priorité de l'alerte | Définit la priorité de l'alerte. | Normal |
Gravité de l'alerte | Définit la gravité de l'alerte. | Erreur |
Activé | Active ou désactive le flux de travail. | Oui |
Génère des alertes | Définit si le flux de travail génère une alerte. | Oui |
Target | Microsoft.SQLServer.2014.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.Windows.2SingleEventLog2StateMonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2014.Database.LogShippingDestinationMonitor" Accessibility="Public" Enabled="true" Target="SQL2014Core!Microsoft.SQLServer.2014.Database" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.2SingleEventLog2StateMonitorType" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.Database.LogShippingDestinationMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/EventDescription$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="DestOutOfSync" MonitorTypeStateID="FirstEventRaised" HealthState="Error"/>
<OperationalState ID="DestInSync" MonitorTypeStateID="SecondEventRaised" HealthState="Success"/>
</OperationalStates>
<Configuration>
<FirstComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</FirstComputerName>
<FirstLogName>Application</FirstLogName>
<FirstExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">14421</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery>EventDescription</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>.$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.Database"]/DatabaseName$ </Pattern>
</RegExExpression>
</Expression>
</And>
</FirstExpression>
<SecondComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</SecondComputerName>
<SecondLogName>Application</SecondLogName>
<SecondExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">18268</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery>EventDescription</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>: $Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.Database"]/DatabaseName$,</Pattern>
</RegExExpression>
</Expression>
</And>
</SecondExpression>
</Configuration>
</UnitMonitor>