Ce moniteur détecte quand une source de copie des journaux de transaction n'a pas eu ses journaux sauvegardés avant le seuil défini dans le cadre de la configuration de la copie des journaux de transaction.
Notez que la copie des journaux de transaction n'est pas compatible avec les éditions de SQL Server Express.
Cette analyse détecte lorsque des journaux n’ont pas été sauvegardés dans la source 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 sauvegardes 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 sauvegarde. Le seuil de sauvegarde correspond au nombre de minutes qui peuvent s'écouler entre les travaux de sauvegarde de la copie des journaux de transaction avant qu'une alerte soit générée. Ce message indique nécessairement un problème avec la copie des journaux de transaction. Il peut, en fait, indiquer l'un des problèmes suivants :
Le travail de sauvegarde n'est pas en cours d'exécution. Les causes possibles sont les suivantes : le service Agent SQL Server sur l'instance du serveur principal n'est pas en cours d'exécution, le travail est désactivé ou la planification du travail a été modifiée.
Le travail de sauvegarde est en échec. Les causes possibles sont les suivantes : le chemin d'accès du dossier de sauvegarde n'est pas valide, le disque est plein ou toute autre raison pouvant entraîner l'échec de l'instruction BACKUP.
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 principal et que le travail de sauvegarde pour cette base de données primaire est activé et est planifié pour s'exécuter à la fréquence appropriée.
Il est possible que le travail de sauvegarde sur le serveur principal soit en échec. Dans ce cas, consultez l'historique des travaux de sauvegarde pour déterminer la cause de l'échec.
Il se peut que le travail de sauvegarde de la copie des journaux de transaction, qui s'exécute sur l'instance du serveur principal, ne puisse pas se connecter à l'instance du serveur moniteur pour mettre à jour la table log_shipping_monitor_primary. Ceci peut être dû à un problème d'authentification entre l'instance du serveur moniteur et l'instance du serveur principal.
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 sauvegarde. Si vous modifiez la fréquence du travail de sauvegarde 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_primary n'est pas mise à jour avec les valeurs actuelles avant l'exécution du travail de message d'alerte. 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 primaire, exécutez sp_refresh_log_shipping_monitor sur l'instance du serveur principal.
La date ou l’heure est incorrecte sur l’instance du serveur principal ou du serveur moniteur. Cela 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.LogShippingSourceMonitor" 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.LogShippingSourceMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/EventDescription$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="SourceNotBackedUp" MonitorTypeStateID="FirstEventRaised" HealthState="Error"/>
<OperationalState ID="SourceBackUpComplete" 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">14420</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">18265</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>