Trabajos de larga duración

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

Este monitor comprueba los trabajos del Agente SQL de larga duración.
Tenga en cuenta que el servicio de Agente SQL Server no es compatible en ninguna edición de SQL Server Express; no existe ningún objeto detectado apropiado. Este monitor está deshabilitado de forma predeterminada. Use invalidaciones para habilitarlo cuando sea necesario.

Knowledge Base article:

Resumen

Este monitor comprueba los trabajos del Agente SQL de larga duración. Si un trabajo se ha estado ejecutando durante más tiempo del umbral configurado, se generará una alerta de advertencia o error.

De forma predeterminada, este monitor no supervisa trabajos que tengan el tipo de programación "Iniciar automáticamente al iniciar el Agente SQL Server" porque se suelen ejecutar hasta que se detiene el Agente SQL (es decir, de forma continua) y este comportamiento es normal en ellos. Normalmente, la replicación de SQL Server usa estos trabajos. Pero en algunos casos, los trabajos con el tipo de programación "Iniciar automáticamente al iniciar el Agente SQL Server" se pueden ejecutar durante un intervalo de tiempo relativamente corto. Para supervisar estos trabajos solo tiene que invalidar el parámetro "trabajos ejecutados continuamente incluidos" con una lista delimitada por comas de los nombres de estos trabajos. El nombre del trabajo en la lista debe cumplir los requisitos de una de las clases de identificadores siguiente:

1) Normal:

2) Delimitado:

Cualquier nombre que pertenezca a cualquiera de las clases anteriores debe tener entre 1 y 128 caracteres, sin incluir los caracteres delimitadores.

Causas

Si un trabajo del Agente SQL Server se ha ejecutado durante más tiempo del umbral definido, se genera un estado incorrecto. Esto podría indicar un problema con el trabajo.

El Agente SQL Server es responsable de ejecutar las tareas de SQL Server programadas para que tengan lugar a determinadas horas e intervalos, así como de detectar ciertas situaciones para las que los administradores han definido una acción, por ejemplo, alertar a alguien a través de localizadores o mensajes de correo electrónico, o bien una tarea que solucionará las situaciones. El Agente SQL Server también se usa para ejecutar tareas de replicación definidas por los administradores.

Para identificar el trabajo que ha causado la advertencia o el estado de error, examine los datos de contexto sobre el cambio de estado o la alerta.

Resoluciones

Compruebe SQL Server Management Studio para identificar qué trabajos se están ejecutando. Si estos trabajos se ejecutan durante más tiempo del necesario, investíguelos para averiguar por qué.

Use sp_help_jobactivity para ver información sobre los trabajos que se están ejecutando en este momento.

Por otro lado, si se espera que los trabajos del agente se ejecuten durante un largo período de tiempo:

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Prioridad de la alerta

Define la prioridad de alerta.

Normal

Gravedad de la alerta

Define la gravedad de alerta.

MatchMonitorHealth

Umbral crítico (minutos)

El monitor cambiará al estado Crítico si el valor supera este umbral. Si se sitúa entre este umbral y el umbral de advertencia (incluido), el estado del monitor será de advertencia.

120

Habilitado

Habilita o deshabilita el flujo de trabajo.

No

Genera alertas.

Define si el flujo de trabajo genera una alerta.

Trabajos ejecutados continuamente incluidos

Algunos trabajos del Agente SQL pueden ejecutarse de forma indefinida (hasta que se detenga el Agente). Suelen tener el tipo de programación "Iniciar automáticamente al iniciar el Agente SQL Server". Por ejemplo, la replicación de SQL Server suele usar esos trabajos. Estos trabajos provocan alertas falsas y, de forma predeterminada, el monitor no los tiene en cuenta. Pero puede haber exclusiones cuando esos trabajos se ejecutan durante un período corto. Para supervisar esos trabajos, se debe definir una lista de los nombres de estos trabajos delimitados por comas.

 

Intervalo (segundos)

Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo.

600

Hora de sincronización

Hora de sincronización especificada en un formato de 24 horas. Se puede omitir.

 

Tiempo de espera (segundos)

Especifica el tiempo que el flujo de trabajo se puede ejecutar antes de cerrarlo y marcarlo como erróneo.

300

Tiempo de expiración de la conexión de base de datos (segundos)

Se producirá un error en el flujo de trabajo y se registrará un evento si no puede obtener acceso a la base de datos durante el período especificado.

15

Umbral de advertencia (minutos)

Umbral de advertencia. Si se supera, el estado del monitor cambiará al estado Advertencia como mínimo.

60

Element properties:

TargetMicrosoft.SQLServer.Windows.Agent
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.Agent.LongRunningJobs
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL en Windows: trabajos de larga duración
Hay trabajos de larga ejecución del agente en la instancia de SQL {1} del equipo {0}. Esto puede indicar un problema con uno o más trabajos.
RunAsDefault

Source Code:

<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>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<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>