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.
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 :
peut contenir tous les caractères sauf la virgule (,) et les guillemets doubles (") ;
ne peut pas commencer ou se terminer par des espaces.
2) Délimité :
peut contenir tous les caractères et doit être placé entre guillemets doubles
les guillemets doubles doivent être placés dans une séquence d'échappement en les doublant
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.
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.
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 :
Remplacez le moniteur pour changer les seuils de cette instance spécifique de SQL ou de toutes les instances
Désactiver le moniteur pour cette instance spécifique de SQL ou toutes les instances
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 |
Target | Microsoft.SQLServer.Linux.Agent | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | MatchMonitorHealth | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.Linux.MonitorType.Agent.LongRunningJobs | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>