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.
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:
può contenere qualsiasi carattere ad eccezione della virgola (,) e delle virgolette (");
Non deve iniziare o finire con spazi vuoti.
2) Delimitato:
può contenere qualsiasi carattere e deve essere delimitato da virgolette
le virgolette devono essere raddoppiate come carattere di escape
Un nome appartenente a una delle classi precedenti deve avere una lunghezza compresa tra 1 e 128 caratteri, esclusi i caratteri delimitatori.
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.
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:
Eseguire l'override del monitoraggio per modificare le soglie per questa istanza di SQL specifica o per tutte le istanze
Disabilitare il monitoraggio per questa istanza di SQL specifica o per tutte le istanze
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 |
Attivato | Abilita o disabilita il flusso di lavoro. | No |
Genera avvisi | Definisce se il flusso di lavoro genera un avviso. | Sì |
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 |
Target | Microsoft.SQLServer.Windows.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.Windows.MonitorType.Agent.LongRunningJobs | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.Agent.LongRunningJobs" Accessibility="Public" Enabled="false" Target="SqlDiscW!Microsoft.SQLServer.Windows.Agent" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.Agent.LongRunningJobs" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.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>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<Threshold1>60</Threshold1>
<Threshold2>120</Threshold2>
<IncludedJobs/>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>600</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>