Travaux de longue durée

Microsoft.SQLServer.Linux.Monitor.Agent.LongRunningJobs (UnitMonitor)

Ce moniteur vérifie les travaux de longue durée de l'agent SQL.
Notez que le service SQL Server Agent n'est pris en charge par aucune édition de SQL Server Express ; aucun objet approprié n'est découvert. Ce moniteur est désactivé par défaut. Utilisez des remplacements pour l'activer en cas de besoin.

Knowledge Base article:

Récapitulatif

Ce moniteur recherche les travaux de longue durée de l'agent SQL. Une alerte d'avertissement ou d'erreur est déclenchée si la durée d'exécution d'un travail est supérieure au seuil configuré.

Par défaut ce moniteur ne surveille pas les travaux avec le type de planification « Démarrer automatiquement au démarrage de SQL Server Agent », car ils s'exécutent souvent jusqu'à l'arrêt de l'agent SQL (c'est-à-dire en continu) et ce comportement est normal. Généralement, la réplication SQL Server utilise ces travaux. Toutefois, dans certains cas, les travaux avec le type de planification « Démarrer automatiquement au démarrage de SQL Server Agent » peuvent avoir une durée d'exécution relativement courte. Pour surveiller ces travaux, remplacez simplement le paramètre « Travaux exécutés en continu inclus » avec la liste des noms de ces travaux séparés par une virgule. Le nom du travail dans la liste doit répondre aux exigences d'une des classes d'identificateur suivantes :

1) Régulier :

2) Délimité :

Tous les noms de base de données appartenant à l'une des classes ci-dessus doivent avoir entre 1 et 128 caractères, sans compter les caractères de séparation.

Causes

Un fonctionnement anormal est dû à un travail de l'Agent SQL Server qui s'est exécuté pendant une durée supérieure au seuil configuré. Ceci peut indiquer un problème au niveau du travail.

SQL Server Agent est responsable de l'exécution des tâches SQL Server planifiées à des heures ou à des intervalles spécifiques ainsi que de la détection de conditions particulières pour lesquelles les administrateurs ont défini une action, comme l'alerte d'une personne par radiomessagerie ou par e-mail, ou une tâche traitant les conditions. SQL Server Agent est également utilisé pour exécuter des tâches de réplication définies par les administrateurs.

Pour identifier le travail à l'origine de l'état d'avertissement ou d'erreur, examinez les données de contexte pour identifier un changement d'état ou une alerte.

Résolutions

Consultez SQL Server Management Studio pour identifier les travaux en cours d'exécution. Si la durée d'exécution de ces travaux est plus longue que nécessaire, examinez-les pour en déterminer la cause.

Utilisez sp_help_jobactivity pour afficher les informations des travaux en cours d'exécution.

Sinon, si vous supposez que certains travaux de l'agent s'exécutent pendant longtemps :

Paramètres remplaçables

Nom

Description

Valeur par défaut

Priorité d'alerte

Définit la priorité de l'alerte.

Normale

Gravité d'alerte

Définit la gravité de l'alerte.

MatchMonitorHealth

Seuil critique (en minutes)

Le moniteur passe à l’état Critique si la valeur dépasse ce seuil. Le moniteur passe à l’état Avertissement si la valeur est comprise entre ce seuil et le seuil d’avertissement inclus.

120

Activé

Active ou désactive le flux de travail.

Non

Génère des alertes

Définit si le flux de travail génère une alerte.

Oui

Travaux exécutés en continu inclus

Certains travaux de SQL Agent peuvent s'exécuter indéfiniment (jusqu'à l'arrêt de l'agent). Ils ont généralement le type de planification « Démarrer automatiquement au démarrage de SQL Server Agent ». Par exemple, la réplication SQL Server utilise souvent ces travaux. Ils entraînent de fausses alertes et le moniteur ne les prend pas en compte par défaut. Toutefois, il peut y avoir des exclusions quand ces travaux s'exécutent sur une courte durée. Pour les surveiller, vous devez définir une liste de leurs noms séparés par une virgule.

 

Intervalle (en secondes)

Intervalle régulier (en secondes) auquel exécuter le flux de travail.

600

Heure de synchronisation

Heure de la synchronisation spécifiée selon un format de 24 heures. Peut être omise.

 

Délai d'expiration (secondes)

Spécifie la durée pendant laquelle le flux de travail est autorisé à s'exécuter avant d'être fermé et marqué comme ayant échoué.

300

Délai d’attente pour la connexion de base de données (secondes)

Le workflow échoue et enregistre un événement s’il ne peut pas accéder à la base de données pendant la période spécifiée.

15

Seuil d'avertissement (en minutes)

Seuil d'avertissement. Le dépassement de ce seuil a pour effet de basculer le moniteur vers l'état d’avertissement au minimum.

60

Element properties:

TargetMicrosoft.SQLServer.Linux.Agent
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Linux.MonitorType.Agent.LongRunningJobs
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL sur Linux : Travaux de longue durée
L'instance SQL {1} sur l'ordinateur {0} a des travaux d'agent de longue durée. Cela peut indiquer un problème avec un ou plusieurs travaux.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Linux.Monitor.Agent.LongRunningJobs" Accessibility="Public" Enabled="false" Target="SqlDiscL!Microsoft.SQLServer.Linux.Agent" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Linux.MonitorType.Agent.LongRunningJobs" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Linux.Monitor.Agent.LongRunningJobs.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</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>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold1" MonitorTypeStateID="UnderThreshold1" HealthState="Success"/>
<OperationalState ID="OverThreshold1UnderThreshold2" MonitorTypeStateID="OverThreshold1UnderThreshold2" HealthState="Warning"/>
<OperationalState ID="OverThreshold2" MonitorTypeStateID="OverThreshold2" HealthState="Error"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<Threshold1>60</Threshold1>
<Threshold2>120</Threshold2>
<IncludedJobs/>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>600</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>