Processi con esecuzione prolungata

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

Questo monitoraggio controlla i processi di SQL Agent con esecuzione prolungata.
Si noti che il servizio SQL Server Agent non è supportato da alcuna edizione di SQL Server Express. Non esistono oggetti individuati appropriati. Per impostazione predefinita, questo monitoraggio è disabilitato. Usare gli override per abilitarlo quando necessario.

Knowledge Base article:

Riepilogo

Questo monitoraggio controlla i processi di SQL Agent con esecuzione prolungata. Se un processo è in esecuzione per un periodo superiore alla soglia configurata, viene generato un avviso o un messaggio di errore.

Per impostazione predefinita questo monitoraggio non monitora i processi con il tipo di pianificazione 'Avvia automaticamente all'avvio di SQL Server Agent' perché spesso questi processi vengono eseguiti finché non si arresta SQL Server Agent, ovvero in modo continuo, e tale comportamento è normale per tali processi. Questi processi vengono in genere usati dalla replica di SQL Server. In alcuni casi però i processi con il tipo di pianificazione 'Avvia automaticamente all'avvio di SQL Server Agent' possono essere eseguiti per un intervallo di tempo relativamente breve. Per monitorare questi processi eseguire l'override del parametro 'Processi eseguiti ininterrottamente inclusi' con un elenco di nomi di processi delimitati da virgole. Il nome del processo nell'elenco deve soddisfare i requisiti di una delle classi identificatore seguenti:

1) Normale:

2) Delimitato:

Un nome appartenente a una delle classi precedenti deve avere una lunghezza compresa tra 1 e 128 caratteri, esclusi i caratteri delimitatori.

Cause

Uno stato di tipo non integro viene determinato nel caso in cui un processo di SQL Server Agent sia in esecuzione per un periodo superiore alla soglia definita. Ciò può indicare che si è verificato un problema con il processo.

SQL Server Agent è responsabile dell'esecuzione di attività di SQL Server in base a orari o intervalli pianificati, nonché del rilevamento di condizioni specifiche per le quali gli amministratori hanno definito un'azione, ad esempio la notifica tramite cercapersone o posta elettronica oppure un'attività in grado di risolvere tali condizioni. SQL Server Agent viene inoltre usato per l'esecuzione di attività di replica definite dagli amministratori.

Per identificare il processo che ha causato lo stato di avviso o di errore, esaminare i dati del contesto per lo stato di avviso o di errore.

Risoluzioni

Controllare SQL Server Management Studio per identificare i processi in esecuzione. Se questi processi sono in esecuzione per un periodo di tempo maggiore del necessario, sarà necessario esaminarli per individuare il motivo di tale comportamento.

Usare sp_help_jobactivity per visualizzare le informazioni sui processi attualmente in esecuzione.

In alternativa, se è previsto che l'esecuzione dei processi di alcuni agenti sia prolungata:

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Priorità avviso

Definisce la priorità dell'avviso.

Normale

Gravità avviso

Definisce la gravità dell'avviso.

MatchMonitorHealth

Soglia critica (minuti)

Lo stato del monitoraggio passerà a Critico se il valore supera questa soglia. Se invece il valore si trova tra questa soglia e la soglia di avviso (inclusa), il monitoraggio passerà allo stato di avviso.

120

Abilitato

Abilita o disabilita il flusso di lavoro.

No

Genera avvisi

Definisce se il flusso di lavoro genera un avviso.

Processi eseguiti ininterrottamente inclusi

Alcuni processi di SQL Agent possono essere eseguiti illimitatamente (fino all'arresto di SQL Agent). Per questi processi è in genere definito il tipo di pianificazione 'Avvia automaticamente all'avvio di SQL Server Agent'. Ad esempio, la replica di SQL Server usa spesso tali processi. Questi processi generano falsi avvisi e per impostazione predefinita il monitoraggio non li prende in considerazione. Potrebbero tuttavia esserci alcune esclusioni quando tali processi vengono eseguiti per un breve periodo di tempo. Per monitorare questi processi, è necessario definire un elenco di nomi dei processi separati da virgole.

 

Intervallo (secondi)

Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro.

600

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.

300

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

Soglia avviso (minuti)

Soglia di avviso. Se questa soglia viene superata, lo stato del monitoraggio passerà almeno a una soglia di avviso.

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 in Linux: Processi con esecuzione prolungata
Sono presenti processi agente con esecuzione prolungata nell'istanza SQL {1} del computer {0}. Questo può indicare un problema con uno o più processi.
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>
<NetbiosComputerName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<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>
<Threshold1>60</Threshold1>
<Threshold2>120</Threshold2>
<IncludedJobs/>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>600</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>